如何从angularjs控制器中删除重复功能

时间:2014-04-18 14:08:39

标签: angularjs angularjs-controller angularjs-resource

您好我在angularjs下编写一些代码工作人员,但我必须从控制器到其他代码复制代码,例如我们假设我们有两个控制器editProductController和newProductCtrl,我们必须调用save方法,我的编码风格将是这样的:

var editProductController = function($scope , product){ 
$scope.product = product; 
....
$scope.save = function(){
 product.$save().then(onSuccess , onError);}
....
function onSuccess(response){
   if(response.error === true){
          $scope.productForm.name.$dirty = true;
          $scoe.productForm.name.$invalid = true; 
          $scope.productForm.name.$error.server = response.errors.name;
          ......}
} 
function onError(error){
....
}};

和newProductController

var newProductController = function($scope , Product){ 
$scope.product = {id : null , version :1, ...}; 
....
$scope.save = function(){
 _.extend($scope.product , new Product());
 product.$save().then(onSuccess , onError);}
....
function onSuccess(response){
  if(response.error === true){
          $scope.productForm.name.$dirty = true;
          $scoe.productForm.name.$invalid = true; 
          $scope.productForm.name.$error.server = response.errors.name;
          ......}
} 
function onError(error){
....
}};

当“Product”是angularjs资源服务时。所以我的问题是如何制作更好的编码风格来删除重复的代码?

1 个答案:

答案 0 :(得分:0)

最好的方法是在角度服务或工厂中包含重复的功能。有不同的方式和编码风格来做到这一点。请参阅docs

这是一个例子

app.service('Product', [function(){
    return {aProductMethod: ... , anotherProductMethod: ...};
}]);

然后在您的控制器中注入服务。