2017-01-17 9 views
1

角度1.5.xを使用しています。角度コントローラーと指令を別々のJSファイルに含めることはできますか?

私は現在2つのファイルを持っていますが、1つは指令を持ち、もう1つはコントローラが使用するファイルです。

directive.js

(function(){ 
    var myApp = angular.module('legalentity'); 
    myApp.directive("banks", function() { 
     return { 
      controller: bankController, 
      template: "<div ng-include='banks-tab.html'></div>" 
     }; 
    }); 
}()); 

私は定義されBankControllerを持つ別のファイルを持っています。

(function() { 

    var myApp = angular.module("legalentity"); 

    myApp.controller("bankController", 'BankController'); 

    BankController.$inject = ['RDS_BASE_URL']; 

    function BankController(RDS_BASE_URL) { 
     var entityID = 1001; 
     $scope.bankGrid = { 
      dataSource: RDS_BASE_URL + '/entity/' + entityID + '/bankdetails/', 
      filterRow: { 
       visible: true 
      }, 
      headerFilter: { 
       visible: true 
      }, 
      groupPanel: { 
       visible: true 
      } 
     }; 
    } 
}()); 

ディレクティブは にReferenceError以下のようbankController エラーを見つけることができないとして私のページがロードされません:bankControllerは

が定義されていない、あなたがこの固定する方法を助言することができますしてください?コントローラとディレクティブを別々のJSファイルに保存したいと思います。代わりに、このラインの、また

controller: 'bankController' 

答えて

1

はこれを試してみてください

myApp.controller("bankController", 'BankController'); 

はこれを書く:

myApp.controller("bankController", BankController); 

はここで何が起こっているのかの説明です:

あなたがコントロールを書くときer:bankController、それはそれを見つけることができないディレクティブ.jsのbankControllerというオブジェクトを見つけることを試みます。しかし、 'bankController'と言うと、現在のモジュールでこの名前のオブジェクトを見つけることを試みます。そしてそれは別のファイルにありますが、角度はそれを見つけて使用することができます。あなたは(あなたのコンソールをチェックしてみてください)ので、あなたのコントローラでも取得することはできませんそれは私はJSのエラーが発生しなければならないと考えているコントローラに文字列を代入しようとし

myApp.controller("bankController", 'BankController'); 

言うならば第2のケースで

このエラーのために作成されました。代わりに、ファイル内で見つけることができる関数であるBankControllerを割り当て、それをコントローラ定義として使用します。

関連する問題