bindToController:指令中的Object

时间:2015-07-14 18:07:41

标签: angularjs angularjs-directive

指令bindToController可以是布尔值或对象,后者显示为here

myMod.directive('myDirective', {
  controller: 'MyDirectiveController',
  bindToController: {
    name: '@'
  }
});

但是没有记录的事实引发了一些问题。为什么bindToController: { ... }功能首先出现?是否有适用的场景?

尽管有bindToController wasn't primarily intended,但有趣的是看看它现在如何在angular.component as bindings property中使用以填补1.5和2.0之间的差距,同时scope绑定仍未使用。

2 个答案:

答案 0 :(得分:3)

bindToController最初只是一个布尔值,但是被迁移以允许它成为一个对象,以更明确地说明您绑定到控制器的项/值。由于它是一个布尔值,它引起了一些混乱,这种语法消除了你对控制器添加内容的困惑。

添加原因的想法是传播controllerAs语法的用法,以便远离$scope,特别是向angular2移动。

添加原因的基础是允许指令注入/属性绑定现在基于控制器实例而不是范围参数。

答案 1 :(得分:2)

偶然发现this PR,这是非常明确的解释。

我不确定在scope: { ... }bindToController: { ... }中使用两个不同的绑定是否有实际好处。但它最终也将绑定带到了原型继承的范围:

bindToController: {
  text: '@text',
  obj: '=obj',
  expr: '&expr'
},
scope: true