У меня есть массив, который отображается с помощью ngRepeater, но с этой директивой я использую директиву ngInit, которая выполняет функцию, которая должна возвращать объект для отображения. Все работает отлично, но когда я добавил кнопку "Создать", где я добавляю новое значение в массив, тогда функция "SetPreview" выполняется только один раз, я думаю, что функция должна выполняться в зависимости от величины значения массива. Как я могу это сделать?
интерфейс:
<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-повторитель.