我有一个包含ng-repeat
指令的页面。页面首次加载时ng-repeat
有效,但我希望能够使用ng-click
刷新ng-repeat
的内容。我尝试了以下代码,但它不起作用。有什么建议吗?
<div ng-click="loadItems('1')">Load 1st set of items</div>
<div ng-click="loadItems('2')">Load 2nd set of items</div>
...
<table>
<tr ng-repeat="item in items">>
// stuff
</tr>
</table>
ItemsCtrl:
$scope.loadItems = function (setID) {
$http({
url: 'get-items/'+setID,
method: "POST"
})
.success(function (data, status, headers, config) {
$scope.items = data;
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
};
我希望我对loadItems()
的调用会导致ng-repeat
指令重新加载从我的服务器获取的新数据。
答案 0 :(得分:10)
在回调中添加广播并在您的控制器中订阅。
这应该是服务btw
itemsService.loadItems = function (setID) {
$http({
url: 'get-items/'+setID,
method: "POST"
})
.success(function (data, status, headers, config) {
$scope.items = data;
$rootScope.$broadcast('updateItems', data);
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
};
在您的控制器中:
$scope.$on("updateItems",function(d){
$scope.items = d;
});
所以只要你ng-click="update(id)"
$scope.update = function(id){
itemsService.loadItems(id);
}
您的items
会因订阅而自动更新。