2
我有以下控制器使用服务客户返回客户。问题在于它仅在控制器第一次运行时才执行服务。看看我的服务器,我发现它只在第一次执行获取请求时使用控制器(加载该视图),如果我改变视图并说添加一个客户并返回到列出客户未更新的视图,因为没有另一个获取来自服务的请求。AngularJS服务只运行第一次使用控制器
.controller('searchCTRL', ['$scope', '$http', 'Customers', function($scope, $http, Customers) {
$scope.customers = Customers;
$scope.deleteCustomer = function(id) {
$http.delete('/api/customer/' + id)
.success(function(data) {
$scope.customers.data = data;
})
.error(function(data) {
console.log('Error: ' + data);
});
};
}])
和
.factory('Customers', function($http){
var Customers = {};
$http.get('/api/customer')
.success(function(data) {
Customers.data = data;
})
.error(function(data){
console.log('error: ' + data);
});
return Customers;
});
,如果我留在视图,并重新加载它会像它应该,但到页面的任何后续访问不再执行获取数据的页面。任何帮助,将不胜感激。
该函数可以简化为'return $ http.get('/ api/customer');'。另外,这个问题似乎要模拟“promise unwrapping”,即立即返回一个稍后充满数据的对象。 (另一种选择是继续返回示例,然后在'$ route'配置中解析它。) – Mikke
非常感谢,解决了这个问题。我必须阅读承诺,我还没有使用它们。似乎有理由返回数据承诺,直到数据可用。再次感谢! –