2016-07-08 17 views
0

コントローラーを1回だけ作成する方法を調査しましたが、本当に良いソリューションは見つかりませんでした。AngularJSコントローラを1回だけ作成する

  1. はmasterControllerを作成し、その範囲でmasterControllerScopeでコレクション内のすべての作成したコントローラを保存するために溶液を塗布$ rootScopeにコントローラリストを作成し、ここで作成したコントローラ
  2. を追加します。

    Aは、いくつかののみ回避策を発見しました

は、だから私のテンプレートをロードすると、私は、コントローラ、agregateする特別myServiceというを使用する必要がありますlsoサービスはチェックを行う必要があります。コントローラがすでに作成されている場合は、古いものをロードする必要があります。新しいコントローラはロードしないでください。

アルゴリズムは単純なようですが、角度をつけて使用すると醜いです。私は角度が非常に弱いことを願って、これは私がより良い解決策を見いださなかった理由です。

あなたはより良いアイデアや解決策を提案できますか?私はより明確化を追加する

...私はすでに基本ライブラリで実装されている必要があるものやサービスを再設計必要可能:

ng-app=singleApplication 
|-ng-view 

SingleApplicationがのためのテンプレートを管理するためにNG-ルートを持っていますng-view各テンプレートにはという固有のコントローラがあります。現在のビューと異なる場合はいつでも、私はコントローラの作成を参照してください。しかし、テンプレートが一度ロードされた場合は、サーバーにデータを要求しないでください。私は、古いデータ、テーブル、コントロールでテンプレートを表示する必要がありますが、コントローラが毎回作成されている場合はできません。 コントローラスコープこの)にロードされたすべてのデータは、すべてのキーがコントローラスコープにユニークですが、私は$スコープまたは$ rootScopeにデータを保存する場合、私は良い保証はありません。すべてのコントローラが、一つのモジュールの下に作成されている場合

+1

次の例をご覧くださいそのモジュールを持つコントローラができますが、一方のコントローラを作成し、それを使用しようとしていますモジュール間で右か? –

+0

あなたは何を達成しようとしていますか?あなたがテンプレートでフィルタを使用するかコントローラ内のテーブルのnページに移動すると、すべてのデータがリセットされた場合、角度が –

+0

でないものを実行するためのより簡単な方法があります。モジュールは1つしかなく、余分なサーバー要求があります。ですから、コントローラを作成する能力は一度しか必要ありません。 – Sergii

答えて

2

、その後、我々は

var app = angular.module('app', []); 


app.controller('TextController', function ($scope) { 
    $scope.text = { 
     message: 'Welcome!!' 
    }; 
}); 

app.controller('ItemController', function ($scope) { 
    $scope.items = [{ 
     title: 'Pencil', 
     quantity: 8, 
     price: 4.2 
    }, { 
     title: 'Pen', 
     quantity: 2, 
     price: 5.2 
    }, { 
     title: 'Watch', 
     quantity: 3, 
     price: 10.2 
    }]; 
}); 

http://codepen.io/nagasai/pen/bZoVVG

関連する問題