我有一个像这样的ng-repeat设置:
<div data-ng-repeat="obj in objs | orderBy: 'number'">
<button data-ng-click="AddTopic(obj, Id);">
Add Topic
</button>
</div>
在我的控制器中
$scope.AddTopic = function (obj, Id) {
$http.get('/api/GetSubTopic?Id=' + Id)
.success(function (data) {
obj.subTopics.push(data);
});
};
当用户点击按钮时,它会获取主题信息并将其添加到obj.subTopics数组中。
然而,这似乎不会更新objs对象中的数据。如何让它更新该数据?
答案 0 :(得分:0)
您可能正在更新引用,但问题是$digest
未被触发。由于您已经在进行异步调用,因此您只需使用$http
返回的承诺即可:
$scope.AddTopic = function (obj, Id) {
$http.get('/api/GetSubTopic?Id=' + Id)
.then(function (response) {
obj.subTopics.push(response.data);
});
};
非常相似。
这是plunk。我使用$q
来模拟异步调用。但它们都是有角度的承诺,这是特殊的,因为导致$digest
发生。