gpt4 book ai didi

javascript - 将数组转换为嵌套对象

转载 作者:行者123 更新时间:2023-11-29 22:02:30 24 4
gpt4 key购买 nike

我想做什么:我正在尝试基于 ngModel 在指令中使用 AngularJS 动态更新范围。

一些背景故事:我注意到 Angular 将我的 ngModel 字符串视为字符串而不是对象。所以如果我有这个:

ng-model="formdata.reports.first_name"

如果我尝试在指令中提取 ngModel,并为其分配一些内容,我最终会得到 $scope["formdata.reports.first_name"]。它将其视为字符串而不是嵌套对象。

我现在在做什么:我认为让它工作的唯一方法是将 ngModel 字符串拆分成一个数组,所以我现在正在使用:

models = ["formdata", "reports", "first_name"];

这很好用,我现在可以在静态长度上使用动态值,如下所示:

$scope[models[0]][models[1]][models[2]] = "Bob";

问题:如何使动态范围的长度动态化?如果需要,我希望它可以扩展到 100 个嵌套对象,甚至只是 1 个。

更新:我能够使用 if 语句使这个半动态,但我将如何使用 for 循环以便没有“max”?

if (models[0]) {
if (models[1]) {
if (models[2]) {
if (models[3]) {
$scope[models[0]][models[1]][models[2]][models[3]] = "Bob";
} else {
$scope[models[0]][models[1]][models[2]] = "Bob";
}
} else {
$scope[models[0]][models[1]] = "Bob";
}
} else {
$scope[models[0]] = "Bob";
}
}

最佳答案

这是一个答案

I noticed Angular is treating my ngModel strings as a string instead of an object

require 属性添加到您的指令,然后将第四个 ctrl 参数添加到您的 link 函数

app.directive('myDirective', function() {
return {
require: 'ngModel',
link: function(scope, element, attributes, ctrl) {
// Now you have access to ngModelController for whatever you passed in with the ng-model="" attribute
ctrl.$setViewValue('x');
}
};
});

演示:http://plnkr.co/edit/Fcl4cUXpdE5w6fHMGUgC

关于javascript - 将数组转换为嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com