Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angular js中将数据从工厂传递到控制器?_Javascript_Angularjs - Fatal编程技术网

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);

第二种方法的优点是,大部分逻辑都保留在服务中。你保持简单,不必知道承诺或处理承诺。

谢谢你的回复。。我正试图使用你在回答中提到的第二种方法,但它不起作用。