Javascript 如何在angular js中将数据从工厂传递到控制器?
我有一个工厂包含保存客户功能。成功后,我希望将其响应传递到控制器,以便更新视图 工厂 控制器 请帮我解决那个问题Javascript 如何在angular js中将数据从工厂传递到控制器?,javascript,angularjs,Javascript,Angularjs,我有一个工厂包含保存客户功能。成功后,我希望将其响应传递到控制器,以便更新视图 工厂 控制器 请帮我解决那个问题 多谢各位,首先想到的是: //in your factory return { saveCustomer: function(data) { var request = $http({...}); return request; } } //in your controller authFactor .saveCustomer(data
多谢各位,首先想到的是:
//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({...});
}
}
return {
saveCustomer: function(data) {
var customer = {};
$http({...}).success(function(data){
angular.copy(data, customer);
});
return customer;
}
}
控制者:
authFactor.saveCustomer(data).success(function(customer) {
$scope.customer = customer;
})
您可以做的另一件事是返回一个对象引用并将其放在您的作用域中。填充对象后,它将在您的范围内更新
服务:
return {
saveCustomer: function(data) {
return $http({...});
}
}
return {
saveCustomer: function(data) {
var customer = {};
$http({...}).success(function(data){
angular.copy(data, customer);
});
return customer;
}
}
控制器:
$scope.customer = authFactor.saveCustomer(data);
第二种方法的优点是,大部分逻辑都保留在服务中。你保持简单,不必知道承诺或处理承诺。谢谢你的回复。。我正试图使用你在回答中提到的第二种方法,但它不起作用。