web-dev-qa-db-ja.com

angularjsの複数のjsファイルで単一のコントローラーを分割する方法

私は大きなアプリケーションをsilver-lightからangularjsに書き換えていますが、それを行っている間に、コントローラーのjsファイルのそれぞれが2000-3000行のコードであることに気付いています。私のコードはすべてscope変数に大きく依存しています。単一のコントローラーのjsファイルを複数のjsファイルに分割する機会があるかどうか疑問に思いますか?どんなポインタでもいただければ幸いです。

30
Mothupally

複数のコントローラーを使用して、ページ内のタスクを処理します。 largコントローラーの使用が避けられない場合は、スコープを別のメソッドに渡して定義を複数のファイルに分割し、残りのメソッドをそこで定義できます。

最初のファイルで:

app.controller('CtrlA', function($scope){
app.expandControllerA($scope);

});

2番目のファイル

app.expandControllerA = function($scope)
{

}

変数または依存関係をexpandControllerA関数に渡すことができます。

24
Alborz

また、ベースコントローラーを作成し、 $ controller サービスを使用して派生コントローラーを作成することもできます。

例えば:

function BaseCtrl($scope, options) {
    var vm = this;

    // code
    return vm;
}

function ChildCtrl($controller, $scope) {
    var vm = $controller('BaseCtrl', {
        $scope: $scope,
        options: { }
    });

    // extend view model
    vm.name = '';

    return vm
}

コントローラーを個別のファイルに分割する方法は他にもあります。このng-conf video を確認してください。

3
Aman Mahajan

angularモジュールでApp.factoryまたはapp.serviceを使用できます。 彼らはあなたのスニペットにデータを継承するようなものになるでしょう。データの一部をメインコントローラの外部に割り当て、割り当てられた変数をコントローラに継承できるようにします。

    app.factory('name of the factory',function(){
return (data)
   )
app.controller('$scope','name of the factory', function(scope, name of the factopry

$scope.new = data;
))
2
vinod bazari