2016-10-07 9 views
2

私は検索して検索していますが、私は検索で間違った言葉を使っていたかもしれませんが、私が探していたものを正確に見つけることができませんでした。私はAngular 1.5をコンポーネントで使用しています。コンポーネントのコントローラ機能を別のファイルに分割する方法は?

は、私は、成分Aとしましょう:

var module = angular.module('myApp'); 

module.component('A', { 
    templateUrl: 'template.html', 
    controller: function(){} 
}); 

今これは非常に簡単です。私はまた、myControllerFunctionが同じファイル内にある限り、私は次のことができることを知っています。

var module = angular.module('myApp'); 

module.component('A', { 
    templateUrl: 'template.html', 
    controller: myControllerFunction 
}); 

function myControllerFunction(){} 

ここで、「myControllerFunction」のファイルのみを作成する場合はどうすればよいですか?コンポーネント内からそのファイル内のその関数にアクセスするにはどうすればよいですか?

Node.jsを使用すると、エクスポートとrequire()が使いやすいことがわかりますが、AngularJSを使用して何をすべきかよく分かりません。

ご協力いただければ幸いです。ありがとうございました!

+0

別のファイルに移動して解決しようとしている問題は何ですか? – charlietfl

+0

charlietfl、私はちょうど私のコードを整理しようとしています。私が提供した例は非常にシンプルですが、実際のコードはかなり長くなっています。だから私は、他の場所で私のコンポーネントコントローラを作成することによってその特定のファイルを汚染しないようにしています。 –

+0

ノルムはファイルごとに1つのコンポーネントであり、コントローラコードが本当に長くて何かが間違っていて、正しくサービスを使用していない場合 – charlietfl

答えて

3

あなたは以下のようなあなたのモジュールからコントローラを参照することができます。

module.component('A', { 
    templateUrl: 'template.html', 
    controller: 'YourController' 
}); 

はその後、別のファイルに次のメソッドで、コントローラを定義することができます。

function() { 
    'use strict'; 

    angular.module('app').controller('YourController', 
      YourController); 

    YourController.$inject = [ '$scope', '$http', '$window', 
      '$rootScope' ]; 

    function YourController($scope, $http, $window, $rootScope) {  
     function yourcontrollerfunction() { 
     } 
     yourcontrollerfunction();    
    } 
})(); 

コントローラがロードされると、yourcontrollerfunction関数が自動的に呼び出されます。モジュールがロードされるとコントローラがロードされます。

+0

ああ、クール!したがって、そのモジュール上にコントローラを作成するだけで、コンポーネントのコントローラ属性がそのモジュールを見つけることができます。私はすぐにそれをテストし、おそらくそれがうまくいけば解決されたものとしてマークします。ありがとうございました! –

関連する問題