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

时间:2014-05-16 13:46:58

标签: angularjs angularjs-routing angularjs-controller

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

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

2 个答案:

答案 0 :(得分:14)

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

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

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

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

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

答案 1 :(得分:5)

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

另一方面,

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

顺便说一句:如果您需要路由和嵌套视图,可以查看angular ui-router