AngularJS:为什么以及何时人们在自定义指令中声明控制器

时间:2016-04-13 17:59:23

标签: angularjs

我看过几个自定义指令示例代码,并看到人们在自定义指令中声明控制器。我是角色的新手,这就是为什么只是不明白人们何时以及为什么人们在自定义指令中声明控制器?

这里有一个用法

app.directive('someDirective', function () {
  return {
    scope: {},
    controller: function () {
      this.name = 'Pascal'
    },
    controllerAs: 'ctrl',
    template: '<div>{{ctrl.name}}</div>'
  };
});

代码取自http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html

还想知道 bindToController:true,的用法是什么?它的作用以及人们何时使用它。

请通过几个示例和代码帮助我理解这一点。我需要了解在自定义指令中声明控制器的重要性。

感谢

2 个答案:

答案 0 :(得分:0)

据我了解(以及来自this answer的内容),如果您想在不同指令之间共享特定功能/数据,则需要这样做。

答案 1 :(得分:0)

通常,这是使用关注点分离的正确做法。即使代码控制器主体位于指令定义内部,您仍然将数据(控制器负责)和DOM操作分开,link方法应该存在。

如果这就是为什么有控制器代码(以及为什么它没有在外面定义),我会说“为什么不呢?” 如果这只是少量特别针对这个指令的代码,那么可以在一个地方定义它。

但根据我的理解,这些案例可能会更好地通过定义过滤器来实现,但这完全取决于特定的应用架构。