Si consideri il codice:
var app = angular.module("app", [], function($routeProvider) {
$routeProvider
.when("/page1", { controller: "MyController" })
.when("/page2", { controller: "MyController" })
.when("/page3", { controller: "MyController" });
});
app.factory("StrategyOne", function() {...});
app.factory("StrategyTwo", function() {...});
app.factory("StrategyThree", function() {...});
app.controller("MyController", function(Strategy, $scope) {...});
A seconda URL, voglio sia StrategyOne
, o StrategyTwo
, o StrategyThree
da iniettare, quando si costruiscono MyController
. Una pseudo-codice per illustrare l'idea:
var app = angular.module("app", [], function($routeProvider) {
$routeProvider
.when("/page1", { controller: "MyController", Strategy: "StrategyOne" })
.when("/page2", { controller: "MyController", Strategy: "StrategyTwo" })
.when("/page3", { controller: "MyController", Strategy: "StrategyThree" });
});
Qualsiasi cambiamento posso realizzare qualcosa di simile con AngularJS?
OMG, sono stato sicuro che è possibile, ma non l'ho aspettava è _that_ facile. Grazie! :-) – agibalov
Funziona ancora? Mi sto imbattendo in un problema dichiarato [qui] (https://groups.google.com/forum/#!msg/angular/QtO8QoxSjYw/SWxea0tOBGYJ) dove la mia fabbrica viene chiamata una sola volta; e non ogni volta che il percorso dovrebbe essere risolto. – Lucas
@Lucas Questo probabilmente perché le fabbriche sono singleton e vengono chiamate solo una volta! Quello che succede è che la fabbrica viene iniettata nel tuo controller (nessun metodo viene chiamato su di esso), lasciando il controller in contatto con qualsiasi cosa voglia contro il tuo, ad es. nel tuo controller 'StrategyOne.getContent()' – WickyNilliams