Array
中Array
内的$scope
更新后,我在更新视图时遇到问题。
首先,我检查数组成员是否已存在:
$scope.myArray = [];
if(typeof $scope.myArray[someIndex] == 'undefined') {
$scope.myArray[someIndex] = {
name: someName,
data: []
};
}
然后按下$scope.myArray[someIndex].data
:
$scope.myArray[someIndex].data.push(dataContent);
此时视图不会更新。
当然,如果我直接推到$scope.myArray
那就可以了。有什么建议吗?
修改:小提琴here
答案 0 :(得分:1)
它看起来比它简单。
基于响应here我正在设置一个允许设置字符串键的关联数组。如果将数组声明为=[]
,则无法将字符串设置为键。
所以我只是将我的声明$scope.myArray=[]
更改为$scope.myArray={}
并且瞧,它有效。
答案 1 :(得分:0)
尝试:
if(typeof $scope.myArray[someIndex] == 'undefined') {
$scope.$eval(function(){
$scope.myArray[someIndex] = {
name: someName,
data: []
};
$scope.myArray[someIndex].data.push(dataContent);
});
}
答案 2 :(得分:0)
这有效:
HTML,
<div ng-app>
<div ng-controller="NestedCtrl">
<article ng-repeat="member in myArray">
{{member.name}}
<article ng-repeat="next in member.data">
{{next.nested}}
</article>
</article>
</div>
</div>
Angular JS:
function NestedCtrl($scope) {
$scope.myArray = [];
var callMe = function(){
if(typeof $scope.myArray[0] == 'undefined') {
$scope.myArray[0] = {
name: 'Hello',
data: []
};
}
$scope.myArray[0].data.push({nested : 'yay'});
}
callMe();
}