Angularjs 当指令在NGS中重复时的绑定问题
这就是它的样子,下面是 在该指令中,有一个属性是双向绑定,父范围中有一个变量 但这并不是我想要的。(但我能理解为什么它不起作用) 原因是ngRepeat将创建自己的作用域,因此,一旦指令中的变量发生更改,就可以在ngRepeat中添加一个变量,但它将保持父级中的变量不变 我可以做一些像scope.$parent.$parent.variable这样的事情来更改变量,但这不是Angular中的想法 我该怎么办 此外,如果我更改items集合中的重复项,则无法更改该项 出于上述相同的原因。编辑(再次):问题似乎在于数组中需要引用类型,例如对象或数组 格洛比的评论完全正确。双向绑定不起作用,因为Angular似乎在第二个作用域对之间创建原语类型(字符串、数字等)的副本。所以当您在两个作用域之间嵌套双向绑定的基本体类型时,这很好,因为它使用一个实例,但当您将其嵌套到多个深度时,它将创建基本体的副本,并且您不再更新同一实例Angularjs 当指令在NGS中重复时的绑定问题,angularjs,Angularjs,这就是它的样子,下面是 在该指令中,有一个属性是双向绑定,父范围中有一个变量 但这并不是我想要的。(但我能理解为什么它不起作用) 原因是ngRepeat将创建自己的作用域,因此,一旦指令中的变量发生更改,就可以在ngRepeat中添加一个变量,但它将保持父级中的变量不变 我可以做一些像scope.$parent.$parent.variable这样的事情来更改变量,但这不是Angular中的想法 我该怎么办 此外,如果我更改items集合中的重复项,则无法更改该项 出于上述相同的原因。编辑(再次
app.controller('MainCtrl',函数($scope){
$scope.items=[
{文本:'苹果'},
{文本:'香蕉'},
{文本:“橙子”}
];
$scope.addItem=函数(){
$scope.items.push({text:'test'});
};
});
应用指令('测试',函数(){
返回{
限制:'E',
范围:{
foo:'=foo'
},
模板:“{foo}}}bar”,
控制器:函数($scope){
$scope.bar=函数(){
$scope.foo+='!';
};
}
};
});
以防它有助于尝试绑定到非基本类型(如对象)。除非绑定到原语,否则即使创建了子作用域,绑定仍应按预期工作。请参阅了解更多信息。不,这不是我要求的。无论如何,谢谢。一个$emit就可以了,但我不喜欢这个答案。。感觉外面有更好的东西:把活动泡泡起来,这很管用,但我对youThanks@Gloopy也有同样的感觉,事实证明你说得对。我应该更仔细地阅读那篇文章。谢谢你的回复:)我用了你的例子,但家长没有改变。我想范围。$parent
是NGRepeat创建的范围,我想我已经找到了。格洛比的上述评论完全正确。您需要绑定到引用类型。谢谢!我也再次发现了一些关于这个的讨论,先生@blesh,你节省了我的时间。
parent scope
ng-repeat
directive
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 += '!';
};
}
};
});