如何从ng-repeat中更新父对象中的数据?

时间:2014-01-21 15:43:05

标签: angularjs

我有一个像这样的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对象中的数据。如何让它更新该数据?

1 个答案:

答案 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发生。