2016-05-19 19 views
0

Javascriptの例:

$stateProvider.state("stateA",{ 
      url:"^/statea", 
      resolve:{ 
       //include or importing controller file here 
      }, 
      views:{ 
       "header":{ 
        templateUrl:"templates/blocks/login/header.html", 
        //OR 
        controllerUrl: "/pathCtrl", 
        controller: nameController 

        } 
       } 
      } 
    }); 

私は私が必要なときに、インデックスファイルにそれらを含めることを強制されずに、その場でコントローラをインポートできるようにしたいと思います。

+3

使用ビルドシステムは、ビルド時にすべてのファイルをバンドルします。物事を非同期に保つことから、価値のあるものはほとんど得られません。角膜は怠惰な負荷に対して非常に敵対的です。 – estus

+0

私はestusのコメントに同意しますが、これを達成するためにcontrollerProviderを使用できるかもしれません。 –

+0

だからベストプラクティスは何ですか?ユーザーが自分のウェブサイト/ webappの任意のページに移動したときに、すべてのコントローラを一度にロードする必要がありますか? – Donovant

答えて

0

evalと$ injectorサービスでは可能ですが、お勧めしません。しかし、ここであなたが行く:SomeCtrlConstructorはevalのによって作成されたコンストラクタの名前です

eval(someFileContent); 
var someCtrl = $injector.instantiate(SomeCtrlConstructor, { 
    $scope: $scope 
}); 

。この解決策にはいくつかの問題があります。それらの最も顕著なのはこれの使用です。これを子コンポーネントに渡すことができます。 $ scopeと同じように。

VAR someCtrl = $ injector.instantiate(SomeCtrlConstructor、{ $範囲:$スコープ、 自己:この })。

作業フィドル: https://jsfiddle.net/y552xgo7/

+0

だから、コントローラをdinamicallyロードすることについて何をお勧めしますか? コントローラが50台あるとしましょう。この場合は何ですか? – Donovant

+0

あなたはそれに必要なものによって異なります。しかし、webpack 2と動的モジュールの読み込みを見てください。または他のモジュールシステム。 – sielakos

関連する問題