Sie Ihre Controller in vielerlei Hinsicht wie einstellen:
$stateProvider.state('contacts', {
template: '<h1>{{title}}</h1>',
controller: function($scope){
$scope.title = 'My Contacts';
}
})
Oder, wenn Sie bereits einen Controller auf dem Modul definiert haben, wie folgt aus:
$stateProvider.state('contacts', {
template: ...,
controller: 'ContactsCtrl'
})
Alternativ verwenden Die Syntax des Controllers wird wie folgt umgestellt:
und
$stateProvider.state('contacts', {
template: ...,
controller: 'ContactsCtrl as contact'
})
Oder für fortgeschrittenere Bedürfnisse Sie die controllerProvider dynamisch eine Controller-Funktion oder String zurück für Sie verwenden können:
$stateProvider.state('contacts', {
template: ...,
controllerProvider: function($stateParams) {
var ctrlName = $stateParams.type + "Controller";
return ctrlName;
}
})
Quelle: https://github.com/angular-ui/ui-router/wiki#controllers
einfach, Controller als Syntax hilft, wenn wir mit verschachtelten Controllern arbeiten. Die genannten Bereiche sind klar definiert, sodass es keine Konflikte zwischen den Controllern gibt, da Sie angeben müssen, auf welchen Controller Sie vor dem Punkt verweisen.
<div ng-controller="Shell as shellVm">
<h1>{{shellVm.title}}</h1>
<article ng-controller="Customers as customersVm">
<h2>{{customersVm.title}} in {{shellVm.title}}</h2>
<ul ng-repeat="c in customersVm.customers">
<li>{{c.name}}</li>
</ul>
</article>
</div>
Siehe auch AngularJs "controller as" syntax - clarification?.
'Es gibt Leistungsverbesserungen auch, wenn wir den Einsatz von $ scope minimieren, Wie auch? Kannst du das erklären?. Ich dachte ControllerAlias ist nur als eine Eigenschaft auf dem Bereich (Bereich für den Controller erstellt) mit seinem Wert als der Controller-Instanz hinzugefügt. Sie minimieren also nicht den Einsatz von $ scope, natürlich direkt. Ich stimme den anderen Teilen in der Antwort zu. – PSL
@PSL: Ich habe es vielleicht missverstanden. Entfernen es .. –