指令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
绑定仍未使用。
答案 0 :(得分:3)
bindToController
最初只是一个布尔值,但是被迁移以允许它成为一个对象,以更明确地说明您绑定到控制器的项/值。由于它是一个布尔值,它引起了一些混乱,这种语法消除了你对控制器添加内容的困惑。
添加原因的想法是传播controllerAs
语法的用法,以便远离$scope
,特别是向angular2移动。
添加原因的基础是允许指令注入/属性绑定现在基于控制器实例而不是范围参数。
答案 1 :(得分:2)
偶然发现this PR,这是非常明确的解释。
我不确定在scope: { ... }
和bindToController: { ... }
中使用两个不同的绑定是否有实际好处。但它最终也将绑定带到了原型继承的范围:
bindToController: {
text: '@text',
obj: '=obj',
expr: '&expr'
},
scope: true