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
非常感謝,解決了這個問題。我必須閱讀承諾,我還沒有使用它們。似乎有理由返回數據承諾,直到數據可用。再次感謝! –