angularjs – ngRepeat中指令时的绑定问题
发布时间:2020-12-17 17:18:03 所属栏目:安全 来源:网络整理
导读:这就是它的样子,这里是 Plunker parent scope ng-repeat directive 在指令中,有一个属性是与父作用域中的变量进行双向绑定. 但这并不像我想的那样有效.(但我能理解为什么它不起作用) 原因是ngRepeat将创建它自己的范围,因此一旦在指令中更改变量,Angular会在
这就是它的样子,这里是
Plunker
parent scope ng-repeat directive 在指令中,有一个属性是与父作用域中的变量进行双向绑定. 但这并不像我想的那样有效.(但我能理解为什么它不起作用) 原因是ngRepeat将创建它自己的范围,因此一旦在指令中更改变量,Angular会在ngRepeat中添加一个变量,但它会使变量保持在父变量中. 我可以做一些像scope.$parent.$parent.variable来改变变量,但它在Angular中不是一个想法. 我应该怎么做 ? 此外,如果我更改项目集合中的重复项目,则无法更改项目. 因为上面的原因相同. 解决方法
编辑(再次):看起来问题是您需要在数组中使用引用类型,例如对象或数组.
Gloopy在评论中完全正确.双向绑定无法正常工作,因为看起来Angular在第二个范围配对之间创建了基元类型(字符串,数字等)的副本.所以…当你在两个范围之间嵌套双向绑定的基本类型时,它很好,因为它使用了一个实例,但是当你将它嵌套多个深度时,它会创建一个原始的副本而你不再更新同一个实例. Here’s a new demo app.controller('MainCtrl',function($scope) { $scope.items = [ { text: 'apples' },{ text: 'bananas' },{ text: 'oranges' } ]; $scope.addItem = function(){ $scope.items.push({ text: 'test' }); }; }); app.directive('test',function(){ return { restrict: 'E',scope: { foo: '=foo' },template: '<div>{{foo}} <a ng-click="bar()">bar</a></div>',controller: function($scope){ $scope.bar = function() { $scope.foo += '!'; }; } }; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |