Angularjs的变化不会出现

Angularjs的变化不会出现,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我对Angularjs是新手。我想知道我做错了什么 我有一个元素数组,由一个子指令使用。在父控制器中,如果我尝试将阵列设置为空,它不会反映更改,但如果我在该阵列上拼接,它会工作 $scope.a = [] // does not work $scope.a.splice(1,1) // works 我甚至试图触发$apply,但它不起作用 有人能帮忙吗 由于在创建子作用域期间,通过链接将数据从父作用域传输到子作用域,因此没有绑定。因此,当您更改$scope.a的值时,子作用域仍然引用旧值 有多

我对Angularjs是新手。我想知道我做错了什么

我有一个元素数组,由一个子指令使用。在父控制器中,如果我尝试将阵列设置为空,它不会反映更改,但如果我在该阵列上拼接,它会工作

$scope.a = [] // does not work
$scope.a.splice(1,1) // works
我甚至试图触发$apply,但它不起作用

有人能帮忙吗


由于在创建子作用域期间,通过链接将数据从父作用域传输到子作用域,因此没有绑定。因此,当您更改$scope.a的值时,子作用域仍然引用旧值


有多种方法可以解决这个问题,但主要思想是通过一些容器引用父对象的属性。例如,在子级a替换为container.a,在父级$scope.a=[]替换为$scope.container={a:[]}。如果可能的话,也可以考虑使用控制器来代替这样的容器。

< P>如果我正确地理解了你的问题,这应该是你要做的。

作用{ 函数测试指令{ 返回{ 限制:“A”, 模板:“{smartphone.brand}}”, 替换:正确, 范围:{ 智能手机:'=智能手机' } }; } 函数mainController$scope{ $scope.com=[ {品牌:'Apple',型号:'iPhone4S',价格:'999'}, {品牌:'Samsung',型号:'SIII',价格:'888'}, {品牌:'LG',型号:'Optimus',价格:'777'}, {品牌:'htc',型号:'Desire',价格:'666'}, {品牌:'Nokia',型号:'N9',价格:'555'} ]; $scope.remove=函数{ $scope.com=[]; } $scope.splice=函数{ $scope.Smartphone.0,1; 控制台。逻辑拼接; } } 角度。模块'app',[] .指令'test',testDirective .控制器“主控制器”,主控制器; }; 去除 捻接
请提供fiddle,因为从概念上讲,它是不可能的。在做了一个小改动后,Plunder似乎对我起到了作用:智能手机:'=wbtable'。那么问题是什么呢?我包括了一个plunk。你能编辑它吗?至于问题是什么@user1624859,我不明白你问题的来源。您可以简单地使用双向绑定,就像Joshua suggestedWorks一样,并消除了一些关于双向绑定的疑问。谢谢