我对这三种指定控制器的不同方式感到困惑。
1-我可以在app / index.html文件中包含一个:
<script src="scripts/controller/nav.js"></script>
2-我可以在路线中拥有一个属性:
.when('/link/list/', {
templateUrl: 'view/list.html',
controller: 'navController'
})
3-我可以在视图中拥有一个属性:
ng-controller="navController"
它有很多。我想知道哪条路去及何时。
亲切的问候,
Stephane Eybert
答案 0 :(得分:2)
您的(1)与(2)和(3)无关
还有其他可以绑定控制器的地方(例如指令&#39; controller
属性)。
每种方式都有不同的用途,所以请选择适合您情况的方式。
如果您有指令并希望为其指定特定控制器,请使用指令定义对象的controller
属性。
如果您使用ngView
并希望为每个视图指定一个特定的控制器(通常就是这种情况),请使用$routeProvider
s controller
。
如果要将控制器分配给视图的某个部分(在主文件中或在视图中或部分视图中),请使用ngController
。
以上所有都是&#34;绑定&#34;视图的某些部分的控制器(无论是单个元素还是整个HTML页面或其间的任何内容)。
答案 1 :(得分:1)
我也很新,但是我试着以更外行的方式解释。
1对于您拥有的每个.js文件(可能包含一个或多个控制器),您需要在#1脚本中输入相应的条目。它不是控制器本身,更像是允许脚本识别此.js文件是要运行的文件集的一部分。
2更像是指定一个状态或路由,它可能使用也可能不使用控制器。它很像说一个事件应该如何导致另一个事件。控制器可能涉及状态/路径的转换(即负责从一个状态到另一个状态)或视图本身。
3用于在视图中使用控制器的功能。
答案 2 :(得分:1)
我已经在其中一个答案中添加了评论,但除了语法之外,这可能更像是一个设计问题。这是我的意见
首先,(1)与谈话无关。
(2)是为视图指定控制器时的首选方法,因为它将控制器与视图本身分离。当您想通过提供不同的控制器来重用相同的视图时,这非常有用。
如果您发现自己正在使用(3),请考虑将该区域变为指令,因为通过指定控制器,您指示它需要自己的逻辑。