指定AngularJS控制器:使用ngController与$ routeProvider的好处

N13*_*N13 17 angularjs angularjs-routing angularjs-controller

将控制器与视图模板/部分关联的方式有两种(AFAIK):指定的路径$routeProviderngController指令.特别是(但不是唯一的)简单路由,是否有任何优势/效率?

我的项目目前使用$ routeProvider方法,但我已经完成了嵌套视图的任务.使用ngInclude看起来很简单,只要partial指定了它的ngController.

dre*_*w_w 14

这个问题实际上归结为设计,因此它有点基于意见.记住,我所知道的最佳指导是:

  • $routeProvider - 允许您为模板指定单个控制器.由于这是路由的一部分,因此可以轻松找到与页面一起使用的控制器.我使用它来存储和加载整个页面逻辑而不是元素特定的逻辑.

    这也很重要,因为这意味着您可以为两个不同的路由加载完全相同的模板,但行为和数据可能不同,因为可以更改控制器.这不是ngController选项容易做到的事情.

  • ngController - 这将控制器范围限定在页面/模板上的特定元素.当您在单个页面上需要多个控制器时,这可以使代码更容易阅读,并且它允许控制器更具体地确定范围.

所以它真的归结为范围意图.希望这些规则在决定使用哪些规则时会有所帮助.


a b*_*ver 5

如果您认为包含所有脚本的视图是由单个人或团队开发的独立包,那么ngController就是要走的路,imho.

$routeProvider另一方面,为您提供高级功能,例如通过resolve路线属性注入价值.这样你可以将你的AJAX加载数据直接注入你的控制器,例如,而不是控制器让它自己.或者让路线改变以等待该数据等.

顺便说一句:如果你需要路由和嵌套视图,你可以看看角度ui路由器