我想在我的指令中使用'controllerAs'選項。讓我引用來自「An AngularJS Style Guide for Closure Users at Google」的推理:「controller as」vs isolate scope
爲什麼?將方法和屬性直接放到控制器上,而不是構建一個範圍對象,可以更好地適應Closure類的風格。此外,使用'控制器'使其 顯而易見當多個控制器 應用於元素時,您正在訪問哪個控制器。由於總是有'。'在綁定中,您不必擔心原型繼承掩蓋原語。
但是我可以看到使用這種方法的問題,如果該指令具有隔離範圍綁定。
angular.module('cmw').directive('fooWidget', function() {
return {
controller: function() {
this.qux = '123';
},
controllerAs: 'fooWidget',
scope: {
bar: '='
},
template: ' {{fooWidget.qux}} {{bar}} '
};
});
在這種情況下,bar
屬性附接到範圍,不向控制器,其導致混亂的不一致情況,其中不同的性能應在不同的地方尋找。什麼是'官方'推薦的方法來解決這個問題?
更新:關於此請參見GitHub issue。