Ich würde gerne die Option 'controllerAs' in meinen Anweisungen verwenden. Lassen Sie mich die Begründung aus "An AngularJS Style Guide for Closure Users at Google" zitieren:"Controller als" vs isolieren Bereich
Warum? Putting Methoden und Eigenschaften direkt auf den Controller, statt ein Scope-Objekt zu erstellen, passt besser mit dem Google Closure-Klasse Stil. Darüber hinaus macht es die Verwendung von "Controller as" offensichtlich, auf welchen Controller Sie zugreifen, wenn mehrere Controller auf ein Element angewendet werden. Da gibt es immer ein '.' in den Bindungen müssen Sie sich nicht um prototypische Vererbung maskieren Primitive kümmern.
Aber ich sehe ein Problem mit diesem Ansatz, wenn die Direktive isolieren Bereich Bindings hat.
angular.module('cmw').directive('fooWidget', function() {
return {
controller: function() {
this.qux = '123';
},
controllerAs: 'fooWidget',
scope: {
bar: '='
},
template: ' {{fooWidget.qux}} {{bar}} '
};
});
In diesem Fall wird die bar
Eigenschaft auf den Umfang angebracht ist, nicht an die Steuerung, die in einer verwirrenden inkonsistenten Situation führt, wo unterschiedliche Eigenschaften in verschiedenen Orten gesucht werden sollen. Was ist der "offizielle" empfohlene Weg, um dies zu umgehen?
UPDATE: siehe die GitHub issue darüber.