Ist es möglich, Eigenschaft Injektion in angularJS zu verwenden?angularJS Controller Eigenschaft Injektion
Szenario
Ich weiß, das
app
.module('myapp')
.config(function($stateProvider) {
$stateProvider.state('the-state', {
url: '/the/url',
templateUrl: 'view.html',
controller: 'ctrl',
controllerAs: 'vm',
resolve: {
'boolFlag': function(service){return service.getBoolean();}
}
});
})
.service('service', function(){
this.getBoolean = function() {return ...};
})
.controller('ctrl', function(boolFlag) {
this.boolFlag = boolFlag;
this.execute = function(){...};
});
<div ng-show="vm.boolFalg">
simple dynamic content
</div>
<button type="button" ng-click="vm.execute()">Click Me</button>
arbeiten Aber es fühlt sich undicht. boolFlag` wird nur in der Ansicht zum Ein-/Ausblenden von Inhalten verwendet. Wie kann ich den Controller auflösen und die Eigenschaft boolFlag auf der Controller-Instanz setzen? Ich gehe davon aus, dass Anbieter oder Fabriken der richtige Weg wären, aber ich gehe im Kreis herum und versuche, einen Sinn daraus zu machen.
stelle ich mir es so etwas wie
app
.module('myapp')
.config(function($stateProvider) {
$stateProvider.state('the-state', {
url: '/the/url',
templateUrl: 'view.html',
controller: 'ctrl',
controllerAs: 'vm',
});
})
.provider('ctrlProvider', function(ctrlProvider, service) {
var ctrl = ctrlProvider.$get/invoke/build/create();
ctrl.boolFlag = service.getBoolean();
return ctrl;
})
.service('service', function(){
this.getBoolean = function() {return ...};
})
.controller('ctrl', function() {
this.execute = function(){...};
});
ich auch darüber gehen könnte den falschen Weg aussehen würde. Viele Controller benötigen die Eigenschaft boolFlag. Vielleicht sollte es Teil eines $parentScope
sein? Aber ich weiß nicht, wie ich das programmieren soll.
Update Ich dachte letzte Nacht mehr darüber nach. Das boolFlag muss dem Controller überhaupt nicht zugeordnet werden. Es muss nur Teil des Umfangs sein. $scope.boolFlag = service.getBoolean();
Die Frage wird dann, wie kann ich $ Scope ohne den Controller bevölkern?
Vielen Dank. Mein Endziel war, den Wert überhaupt nicht in den Controller zu injizieren, da er nur in der Ansicht benötigt wird. Wenn ich weiter darüber nachdenke, brauche ich nur boolFlag im Umfang. nicht der Controller. Wie bevölkere ich den Scope, ohne den Controller explizit zu durchlaufen? –