2016-05-19 47 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

使用的編譯系統捆綁的所有文件在製作的時候。保持事物異步,你幾乎不會獲得任何有價值的東西。 Angular對延遲加載非常不利。 – estus

+0

我同意estus的評論,但您可能可以使用controllerProvider來完成此操作。 –

+0

那麼最佳做法是什麼?當用戶登陸到我的網站/ webapp的任何頁面時,我必須一次加載所有的控制器嗎? – Donovant

回答

0

這可能與eval和$注射器服務,但我不會推薦它。但在這裏你去:

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

其中SomeCtrlConstructor是由eval創建的構造函數的名稱。這個解決方案存在一些問題。他們中最突出的就是使用這個。您可以將其作爲自己傳遞給子組件。正如$ scope一樣。

變種someCtrl = $ injector.instantiate(SomeCtrlConstructor,{ $範圍:$範圍, 自:本 });

工作小提琴: https://jsfiddle.net/y552xgo7/

+0

那麼你會推薦關於加載控制器dinamically? 假設我們有50個控制器,在這種情況下是什麼? – Donovant

+0

取決於你需要什麼。但看看webpack 2和動態模塊加載。或者其他一些模塊系統。 – sielakos

相關問題