我,AngularJS,以及它指定控制器的3种不同方式

时间:2014-08-02 08:34:05

标签: angularjs

我对这三种指定控制器的不同方式感到困惑。

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

3 个答案:

答案 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),请考虑将该区域变为指令,因为通过指定控制器,您指示它需要自己的逻辑。