我有一个指令
scope: {
cards : "="
}
在我的控制器中$scope.cards
开始为空,然后在对我的服务器进行异步调用之后,我将对象推入其中。它结束了这样的事情:
$scope.cards = [{name:"hello",type:"world"},
{name:'different name',type:'different type'}, ...etc etc ]
这是一个简单的card in cards
,然后是页面{{card.name}}
中的某个地方
当我进入我的页面时,我确实看到了所有不同的名字。
我的指令允许我拾取并拖动元素。在我的指令中,我希望每个元素的scope.cards[i].name
不同。我使用console.log(scope.cards[i].name)
来查看名称是否不同(其中i是每个元素的索引)。
但出于某种原因,scope.cards
对于每个元素都是相同的。具体来说,它是scope.cards
中的最后一个条目。
发生了什么事?为什么指令假设数组中的所有元素都相同?
答案 0 :(得分:0)
我最初认为我的问题是我没有使用scope.$apply
。
然而,经过进一步调查,问题是我的索引是通过我的控制器绑定的原始数据类型。
以下链接可以很好地了解范围,但基本上,原始数据类型在指令中创建本地副本。因此,当我尝试将基元的值更改为+ = 1时,它不会更改父值。因此我的索引总是为0。
要纠正这个问题,我必须使我的索引成为非原始数据类型。
在我的控制器中,而不是$scope.my_index = 0
它变为$scope.my_index = [0]
,这是第一个值为0的数组。现在在我的指令scope.my_index[0] = scope.my_index[0] + 1
中工作。
https://github.com/angular/angular.js/wiki/Understanding-Scopes