3
在angular.js中保存資源後,我想廣播更改以便更新列表視圖。收到廣播消息後Angular.js視圖不會更新
function EnvironmentCtrl($rootScope, $scope, $location, $routeParams, environmentService) {
environmentService.get($scope, $routeParams.id);
$scope.id = $routeParams.id
$scope.save = function(){
$scope.environment.$save(function(data) {
$rootScope.$broadcast("model-update");
});
}
}
function NavController($scope, $http, $routeParams, environmentService) {
environmentService.list($scope);
$scope.$on("model-update", function(){
environmentService.list(function(data){
$scope.environments = data;
console.log("update called", $scope.environments);
});
});
}
當EnvironmentCtrl.save被調用時,這些控制器之間的通信工作正常。 console.log被調用,服務返回到回調的數據在$ scope中正確設置。
我的服務的相關部分看起來是這樣的:
services.factory('environmentService', [ '$resource', function($resource) {
var environmentService = {};
environmentService.list = function(callback) {
var url = "/service/environment/"
$resource(url).query(function(data) {
callback(data);
});
}
return environmentService;
} ]);
我的看法是這樣的:
<li data-ng-repeat="env in environments">
<a href="#/environment/{{env.id}}">{{env.name}}</a>
</li>
但沒有得到更新,直到刷新。
這是所有'內角'(據我所知),我會認爲它會'只是工作'。我試過從回調中調用$ digest。 $ apply抱怨摘要已在進行中。
誰能告訴我爲什麼視圖沒有得到更新?
感謝您的回覆。我回到這個問題,這一切都工作 - 也許這是一些兌現問題。 – plasma147 2013-02-25 23:55:34