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

相关问题