问题
我发现 ng-repeat 指令无法跟踪新数组的添加。
在我的示例中,新数组是“选项”。
该指令是使用 ng-dialog(第 3 方库)显示的模板的一部分。
如果我关闭对话框并再次打开它,ng-repeat 将获取我在关闭它之前所做的那些更改。
我试过 $scope.$apply(); 但我收到一个警告,它已经在运行。
更新++
我最终使用的解决方案是在 ng-init 上添加一个函数来首先检查该数组是否存在,如果它不存在,则创建它,然后将其分配给新变量。
这是一个更深入的例子,
写这个 jsFiddle 已经指出问题出在 ng-include/ng-repeat - 没有这个很好。
http://jsfiddle.net/20mobk2h/56/
http://jsfiddle.net/20mobk2h/61/
ng-repeat 在称为选项的数组上循环,该数组可能存在也可能不存在。
<div ng-init="options = element.options">
<div ng-repeat="option in options" ng-include="'optionsTree'"></div>
</div>
我通过以下方式添加了一个新选项:
$scope.addItem = function(item) {
if(!item.options){
item.options = [];
}
var obj = {
val: 'blah'
};
item.options.push(obj);
}