将控制器与视图模板/部分关联有两种方式(AFAIK):$routeProvider
和ngController
指令中指定的路径。特别是(但不是唯一的)简单路由,一个是否有任何好处/效率?
我的项目目前使用$ routeProvider方法,但我已经完成了嵌套视图的任务。使用ngInclude看起来很简单,只要partial指定了它的ngController。
答案 0 :(得分:14)
这个问题实际上归结为设计,因此它有点基于意见。记住,我所知道的最佳指导是:
$routeProvider
- 允许您为模板指定单个控制器。由于这是路由的一部分,因此可以轻松找到与页面一起使用的控制器。我使用它来存储和加载整个页面逻辑而不是元素特定的逻辑。
这也很重要,因为这意味着您可以为两个不同的路由加载完全相同的模板,但行为和数据可能不同,因为可以更改控制器。使用ngController
选项不容易做到这一点。
ngController
- 这将控制器范围限定在页面/模板上的特定元素。当您在单个页面上需要多个控制器时,这可以使代码更容易阅读,并且它允许控制器更具体地确定范围。
所以它真的归结为范围和意图。希望这些规则在决定使用哪些规则时会有所帮助。
答案 1 :(得分:5)
如果您认为包含所有脚本的视图是由单个人或团队开发的独立包,那么ngController
就可以了,imho。
$routeProvider
为您提供了一些高级功能,例如通过路由的resolve
属性注入值。这样你可以将你的AJAX加载数据直接注入你的控制器,例如,而不是控制器让它自己。或者让路由改变等等数据。
顺便说一句:如果您需要路由和嵌套视图,可以查看angular ui-router