ngRepeater を使用して表示される配列がありますが、このディレクティブでは、表示するオブジェクトを返す関数を実行する ngInit ディレクティブを使用しています。すべてが完全に機能しますが、配列に新しい値を追加する「新規」ボタンを追加すると、関数「SetPreview」が一度だけ実行され、配列値の量に応じて関数を実行する必要があると思います。どうやってやるの?
UI:
<body ng-app>
<ul ng-controller="PhoneListCtrl">
<button ng-click="add()">Add</button>
<li ng-repeat="phone in phones" ng-init="displayedQuestion=SetPreview(phone);">
{{displayedQuestion.name}}
<p>{{displayedQuestion.snippet}}</p>
</li>
</ul>
</body>
コントローラ:
function PhoneListCtrl($scope) {
$scope.phones = [
{"name": "Nexus S",
"snippet": "Fast just got faster with Nexus S."},
{"name": "Motorola XOOM™ with Wi-Fi",
"snippet": "The Next, Next Generation tablet."},
{"name": "MOTOROLA XOOM™",
"snippet": "The Next, Next Generation tablet."}
];
$scope.add = function(){
this.phones.push({name:'1', snippet:'n'});
};
$scope.SetPreview = function(phone)
{
//here logic which can take object from diffrent location
console.log(phone);
return phone;
};
}
編集:これ
はより複雑なサンプルです: -> 電話のコレクションが空になり、[追加] ボタンをクリックすると新しい項目が追加され、編集可能として設定され (テキスト フィールドの値を変更できます)、ngRender が実行されると、SetPreview 関数は編集可能なオブジェクトを返します(プレビューのような作業です)。ここで、[追加] ボタンをもう一度クリックしてみてください。最初の項目の編集可能な値がまだユーザーに表示されていることがわかりますが、ng-repeater 全体を更新したいと考えています。