2017-04-03 2 views
0

두 개의 모듈 모듈 -1모듈 -2이 내 각 응용 프로그램에 있습니다.한 번만 실행되는 각도 팩토리 기능

인 모듈 -1-, 나 공장

angular.module('ui.campaign.manager').factory('validate',['the',function(the) { 
return { 
    validateOwner: function(scope) { 
     console.log(scope.campaign); 
     if(!scope.campaign.owner) { 
      scope.view = true; 
      scope.errormsg = "Error : Campaign owner is a mandatory field. Please select one from the dropdown menu."; 
      return false; 
     } 
     return true; 
    } 
}; 
를 작성한

}]);

모듈 2에서

, 나는에이 함수를 호출하고 컨트롤러가 NG를 클릭

var campaignApp = angular.module('module-2',[ 'module-1']); 

campaignApp.controller('campaignDetailController', function($scope, validate) { 

    scope.submitCampaignPage = function(){ 
     validate.validateOwner($scope); 
    } 
}); 
<input class="btn btn-primary" type="submit" value="Next" name="campdetailsnext" ng-click="submitCampaignPage()"> 

자, 문제는 내가 validateOwner에게 다음 버튼 기능을 클릭하고 처음입니다 후속 클릭에서 submitCampaignPage 함수가 호출되고 있지만 validateOwner 함수가 호출되지 않는 동안 제대로 호출됩니다.

각도 캐싱 결과입니까?

+0

콘솔 로그에 오류가 있습니까? 'scope.submitCampaingPage'가 정의 된 전체 모듈 구성을 추가하십시오. – lin

+0

아니요, 콘솔 로그에 오류가 없습니다. – user3587856

+0

요청한 코드를 추가하십시오. 'console.log (scope.campaign);'작업 -> 출력을 씁니까? – lin

답변

0

$scope이 아닌 매개 변수를 scope으로 전달해야합니다.

또한

, 그렇지 않으면 예외가

+0

안녕하세요, 그것은 $ 범위 전용이며 $ scope.campaign 또한 컨트롤러에 정의되어 있으며 validateOwner 함수를 처음 호출 할 때 scope.campaign 값을 제대로 인쇄하고 있습니다. – user3587856

0

angular.module("app",[]) 
 
.controller("ctrl",function($scope,validate){ 
 
$scope.campaign = {} 
 
    $scope.submitCampaignPage = function(){ 
 
    console.log(validate.validateOwner($scope)) 
 
} 
 

 
}).factory('validate',function() { 
 
    return { 
 
     validateOwner: function(scope) { 
 
      if(!scope.campaign.owner) { 
 
      scope.view = true; 
 
      scope.errormsg = "Error : Campaign owner is a mandatory field. Please select one from the dropdown menu."; 
 
      return false; 
 
      } 
 
      return true; 
 
     } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
<input class="btn btn-primary" type="submit" value="Next" name="campdetailsnext" ng-click="submitCampaignPage()"> 
 

 
</div>
는 당신이 시도했던 정의되지 않은

데모의 속성에 액세스가 시도 제기되는 컨트롤러 나 공장에서 객체로 scope.campaign를 선언해야합니다 컨트롤러와 팩토리를 테스트 할 때 동일한 모듈에 두는 것입니까? 왜냐하면 방금 컨트롤러와 공장을 같은 모듈에서 시험했기 때문에 괜찮습니다.

관련 문제