【发布时间】:2014-06-23 04:39:03
【问题描述】:
我想在我的指令中使用“controllerAs”选项。让我引用“An AngularJS Style Guide for Closure Users at Google”的推理:
为什么? 将方法和属性直接放到控制器上, 而不是建立一个范围对象,更适合谷歌 封闭类风格。此外,使用 'controller as' 使其 当多个控制器时,您正在访问哪个控制器很明显 应用于一个元素。因为总是有一个'。在绑定中,你 不必担心原型继承掩码原语。
但如果指令具有隔离范围绑定,我会发现使用这种方法会出现问题。
angular.module('cmw').directive('fooWidget', function() {
return {
controller: function() {
this.qux = '123';
},
controllerAs: 'fooWidget',
scope: {
bar: '='
},
template: ' {{fooWidget.qux}} {{bar}} '
};
});
在这种情况下,bar 属性附加到作用域,而不是控制器,这导致了一个令人困惑的不一致情况,即应该在不同的地方查找不同的属性。解决此问题的“官方”推荐方法是什么?
更新:请参阅GitHub issue 了解此内容。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope angularjs-controller