【发布时间】:2023-03-23 18:10:01
【问题描述】:
我正在开发一个使用 ES6 和 Controller As 语法的 AngularJS 项目,但遇到了一些新问题。我有一个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
});
}
我尝试将 item 设置为函数中的变量以及我可以尝试重新引用的各种其他内容,但均未成功。
我唯一的成功是传递索引,然后通过在promise 之前设置let t = this; 然后t.thing.items[index] = response.data 来引用原始对象。这可行,但与通常能够更直接地引用对象相比,感觉有点难看。我在这里错过了什么?
【问题讨论】:
-
请尝试,
angular.merge(item, response.data); -
或 angular.extend(item, response.data) 取决于您的需要
标签: javascript angularjs ecmascript-6 angularjs-controlleras