2017-04-03 19 views
0

私は2つのモジュールモジュール-1モジュール-2を私の角形のアプリケーションで使用しています。 モジュール1において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として渡す必要があります。また

、そうでない場合は例外が

未定義のデモ

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>

+0

こんにちは、これは$ scopeのみで、$ scope.campaignもコントローラで定義されています。そして、初めてvalidateOwner関数を呼び出すときは、scope.campaign値を正しく出力しています。 – user3587856

0

のプロパティにアクセスしようとしているが提起され、あなたがしようとしたコントローラや工場でのオブジェクトとしてscope.campaignを宣言することを確認してくださいコントローラーと工場を同じモジュールに入れてテストするだけですか?私はちょうど同じモジュール上のコントローラと工場の両方で試したので、うまく動作します。

関連する問題