[英]How to pass data from factory to controller in angular js?
我有一個工廠包含保存客戶功能 。成功我想在控制器中傳遞其響應,以便我可以更新視圖。
sampleApp.factory("authFactory", function($location, $http, transformRequestAsFormPost) {
return {
saveCustomer: function(data) {
var request = $http({
method: "post",
url: "webservice/ws.php?mode=saveCustomer",
transformRequest: transformRequestAsFormPost,
data: data
});
request.success(
function(response) {
console.log(response);
}
);
}
};
});
sampleApp.controller('customerController', function($scope, testService,authFactory,$http) {
$scope.addCustomer = function() {
var data = {name: $scope.customerName,city: $scope.customerCity};
// Calling Factory Function
authFactory.saveCustomer(data);
// How to fetch response here
}
});
請幫我解決這個問題謝謝
各種方式,首先想到的是這樣的:
//in your factory
return {
saveCustomer: function(data) {
var request = $http({...});
return request;
}
}
//in your controller
authFactor
.saveCustomer(data)
.success(function() {
//update controller here
})
你在這里工作“ 承諾 ”。 根據您從服務方法返回的內容,您可以執行一些不同的操作。
您可以做的一件事就是返回承諾並在控制器中處理它。
服務:
return {
saveCustomer: function(data) {
return $http({...});
}
}
位指示:
authFactor.saveCustomer(data).success(function(customer) {
$scope.customer = customer;
})
您可以做的另一件事是返回一個對象引用並將其放在您的范圍上。 填充對象后,它將在您的范圍內更新。
服務:
return {
saveCustomer: function(data) {
var customer = {};
$http({...}).success(function(data){
angular.copy(data, customer);
});
return customer;
}
}
控制器:
$scope.customer = authFactor.saveCustomer(data);
第二種方式的優點是大多數邏輯都保留在您的服務中。 你的控制器保持簡單,不必知道承諾或處理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.