2014-04-18 3 views
1

안녕하세요, 저는 angularjs에서 코드 스탭을 쓰고 있습니다.하지만 컨트롤러에서 다른 코드로 코드를 만들어야합니다. 예를 들어 두 개의 컨트롤러 인 editProductController와 newProductCtrl이 있다고 가정하고 save 메소드를 호출해야합니다. 내 코딩 스타일은 그렇게 될 것입니다 : angularjs 컨트롤러에서 repetitve 함수를 제거하는 방법

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){ 
.... 
}}; 

하고 "제품"는 AngularJS와 자원 서비스입니다 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){ 
.... 
}}; 

에 대한

. 그래서 내 질문에 어떻게 더 나은 코딩 스타일을 중복 코드를 제거 할 수있을 것입니다?

답변

0

각도 서비스 또는 공장에 반복 기능을 포함시키는 것이 가장 좋습니다. 다양한 방법과 코딩 스타일이 있습니다. 여기에 예를

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

을 년대 docs

참조 다음 컨트롤러에서 서비스를 주입.

+0

이상적으로 비즈니스 로직의 대부분은 서비스에 있어야합니다. 저는 컨트롤러를 당신의 논리와 당신의 견해 사이의 "접착제"로 생각하고 싶습니다. – NicolasMoise

+0

죄송합니다. 제 질문이 더 명확하게 업데이트되었습니다. 먼저 당신이 생각하는 것과 같은 방식이라고 생각하지만, 제 경우에는 onSucces와 onError 메소드의 $ scope를 처리해야합니다. 서비스 측면에서이 approch를 처리 할 수있는 방법은 무엇입니까? – ziedTn

+0

예, 당신은 $ scope 내부에 액세스 할 수 없습니다. 서비스이기 때문에 논리를 서비스 논리에 반복되는 로직과 구분할 수있는 방법을 찾아야합니다. – NicolasMoise

관련 문제