Я работаю над проектом AngularJS, использующим ES6 и Controller As синтаксис, и сталкиваюсь с некоторыми новыми проблемами.У меня есть ng-repeat
, который вызывает функцию для обновления некоторых данных.Я хочу, чтобы элемент, переданный функции в ng-repeat
, обновлялся при возврате обещания.Проблема в том, что я не могу снова сослаться на нее после того, как обещание вернется.
<div ng-repeat="item in ctrl.thing.items">
<div ng-click="updateItem(item)">Update Item</div>
</div>
Затем функция обновления здесь:
updateItem(item) {
let i = new this.Item(item);
i.update().then(function(response) {
item = response.data; // Item does not get updated in controller
});
}
Я попытался установить элемент впеременная внутри функции и различные другие вещи, которые я мог бы попытаться повторно сослаться, но безуспешно.
Единственный успех, который у меня был, - это передача индекса, а затем ссылка на исходный объект путем установки let t = this;
перед обещанием и затем t.thing.items[index] = response.data
.Это работает, но кажется немного уродливым по сравнению с тем, что обычно можно ссылаться на объекты более напрямую.Что мне здесь не хватает?