所以这就是它的样子,这里是Plunker
parent scope
ng-repeat
directive
在指令中有一个属性是与父作用域中的变量进行双向绑定。
但这并不像我想的那样有用。(但我能理解为什么它不起作用)
原因是ngRepeat将创建它自己的范围,因此一旦在指令中更改了变量,Angular会在ngRepeat中添加一个变量,但它会使变量保持在父变量中。
我可以做一些像scope。$ parent。$ parent.variable来改变变量,但它在Angular中不是一个想法。
我该怎么办?
此外,如果我更改了项目集合中的重复项目,则无法更改该项目。
由于上述原因。
答案 0 :(得分:5)
编辑(再次):看起来问题是您需要在数组中包含引用类型,例如对象或数组。
Gloopy在评论中完全正确。双向绑定无法正常工作,因为看起来Angular在第二个范围配对之间创建了基元类型(字符串,数字等)的副本。所以...当你在两个范围之间嵌套双向绑定的基本类型时,它很好,因为它使用了一个实例,但是当你将它嵌套多个深度时,它会创建一个原始的副本而你不再更新同一个实例。
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 += '!';
};
}
};
});