gpt4 book ai didi

angularjs - 为什么模型不会在这个递归 Angular 指令中更新?

转载 作者:行者123 更新时间:2023-12-02 20:50:43 25 4
gpt4 key购买 nike

这让我困惑了一整天。

为什么当我在文本字段中输入内容时,名称不会更新?一切都是按书本进行的。可能出了什么问题?

总结:我正在尝试构建一个递归指令,当它遇到一个对象时,它会再次调用自身,直到它到达字符串级别。当它发生时,它会提供一个可以更改字符串的输入(也称为对象中的键/值的值)

Here's a JSFiddle

<body ng-app="test">
<div ng-controller="ctrl">
<my-dir the-model="greet"></my-dir>{{greet}}</div>
</body>

angular.module('test', [])
.controller('ctrl', function ($scope) {
$scope.greet = {
"name": "Joe",
"surname": "Norris"
};
})
.directive('myDir', function ($compile) {
var theTemplate =
'<div ng-if="isObject(theModel)">' +
'<div ng-repeat="(k,v) in theModel">'+
'<my-dir the-model="theModel[key]"></my-dir>'+
'</div>'+
'</div>'+
'<div ng-if="!isObject(theModel)">' +
'<input type="text" ng-model="theModel">'+
'</div>'

return {
restrict: 'E',
scope: {
theModel: '='
},
controller: function ($scope) {
$scope.isObject = function (val) {
if (typeof val === 'object') {
console.log("isObject");
return true;
} else{
console.log("is not Object");
return false;
}
}
},
link: function (scope, element) {
element.html(theTemplate); //.append(theTemplate);
$compile(element.contents())(scope);
}
}
});

最佳答案

当我们为 ng-model 提供变量名称时,ng-model 将更新编译范围内的变量.

ng-repeat每次迭代创建一个新的作用域。

当我们在 ng-repeat 中使用 ng-model 时,每个 ng-model 都将使用 ng- 创建的新作用域进行编译重复。因此,这些值不会在 Controller 的范围内更新。

要更新 Controller 范围中的值,请使用点表示法。 (即在 Controller 中创建一个对象并将 ng-model 绑定(bind)到它的属性)

关于angularjs - 为什么模型不会在这个递归 Angular 指令中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812137/

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