問題
ng-repeat ディレクティブが新しい配列の追加を追跡できないことがわかりました。
私の例では、新しい配列は「options」です。
ディレクティブは、ng-dialog (サードパーティ ライブラリ) を使用して表示されるテンプレートの一部です。
ダイアログボックスを閉じて再度開くと、閉じる前に行った変更が 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);
}