我有以下服务:
.service('TasksService', function ($http) {
return $http.jsonp('http://blabla/json/?callback=JSON_CALLBACK');
});
我的控制器:
.controller("TasksCtrl", function ($scope, TasksService) {
TasksService.then(function (TasksService) {
$scope.Tasks = TasksService;
});
});
这显示包含许多项目的列表。 但我有另一个服务和另一个控制器。我在那里更改了一个项目,当我保存并将数据发布到数据库时,我回到初始列表,我仍然看到旧列出的项目。我必须刷新浏览器以查看我编辑的内容。
在第二个控制器中,我有保存功能:
$scope.saveTask = function () {
$http.post('http://blabla', $scope.Task.data).then(function (data) {
// This shows the very first state with all the listed items
$state.go('tasks');
});
};
当我保存更改并且state.go()
向我显示第一个屏幕时,我不知道为什么数据不是来自服务返回数据的新更改。似乎屏幕刚刚更改,但新数据未从服务返回。任何想法如何解决这个问题?
答案 0 :(得分:2)
我得到了它的工作。我改变了我的服务和控制器。在我的服务中,我使用另一种方法返回了一个对象,然后我也改变了我的控制器以使用返回的方法。
服务:
.service('TasksService', function ($http) {
return {
getTasks: function() {
return $http.jsonp('http://blabla/json/?callback=JSON_CALLBACK');
}
};
});
控制器:
.controller("TasksCtrl", function ($scope, TasksService) {
TasksService.getTasks().then(function (data) {
$scope.Tasks = data;
});
});
现在它正常工作,我看到项目列出了新保存和返回的数据。谢谢!
答案 1 :(得分:0)
您只需要将更改的数据反映到您的HTML中 Angular有一个方法
$scope.$apply();
此方法既可以使用参数,也可以不使用参数。 希望这会有所帮助。