Angularjs 如何在发送请求和状态更改后显示新数据
我有以下服务:Angularjs 如何在发送请求和状态更改后显示新数据,angularjs,Angularjs,我有以下服务: .service('TasksService', function ($http) { return $http.jsonp('http://blabla/json/?callback=JSON_CALLBACK'); }); 我的控制器: .controller("TasksCtrl", function ($scope, TasksService) { TasksService.then(function (TasksService)
.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;
});
});
.controller("TasksCtrl", function ($scope, TasksService) {
TasksService.getTasks().then(function (data) {
$scope.Tasks = data;
});
});
这将显示包含许多项的列表。
但我有另一个服务和另一个控制器。我在那个里更改了一个项目,当我保存数据并将数据发布到数据库中,我回到初始列表时,仍然可以看到旧的列表项目。我必须刷新浏览器才能查看我编辑的内容
在第二个控制器中,我具有以下保存功能:
$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()
会显示第一个屏幕,我不知道为什么数据不包含来自服务返回数据的新更改。看起来屏幕刚刚更改,但新数据没有从服务返回。有没有办法解决这个问题?您只需要将更改后的数据反映到html中
Angular有一种方法可以做到这一点
$scope.$apply();
此方法既适用于参数,也适用于无参数。
希望这有帮助。我让它工作起来了。我改变了我的服务和控制器。在我的服务中,我使用另一个方法返回了一个对象,然后我将控制器也更改为使用返回的方法 服务:
.service('TasksService', function ($http) {
return {
getTasks: function() {
return $http.jsonp('http://blabla/json/?callback=JSON_CALLBACK');
}
};
});
以及控制器:
.controller("TasksCtrl", function ($scope, TasksService) {
TasksService.then(function (TasksService) {
$scope.Tasks = TasksService;
});
});
.controller("TasksCtrl", function ($scope, TasksService) {
TasksService.getTasks().then(function (data) {
$scope.Tasks = data;
});
});
现在它正在工作,我看到项目列表中列出了新保存和返回的数据。谢谢大家! 你如何回到最初的名单?
TasksCtrl
是否重新加载?只要使用$state.go('tasks'),TasksCtrl就应该重新加载,因为它与ui路由器相关。。但我不能百分之百确定我不能把它放在哪里。它一直在告诉我$digest已经在进行中。这是用来代替$state.go()的。或者,您可以重新加载您的状态,以便对您的范围应用新的更改