11
注入控制器的依賴考慮代碼:
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) {...});
根據URL,我想無論是StrategyOne
,或StrategyTwo
,或StrategyThree
被注入,構造MyController
時。一個僞代碼來說明這個想法:
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" });
});
任何更改我可以用AngularJS實現這樣的事情嗎?
OMG,我一直相信這是可能的,但我沒料到它的_that_容易。謝謝! :-) – agibalov
這是否仍然有效?我遇到了一個[這裏]聲明的問題(https://groups.google.com/forum/#!msg/angular/QtO8QoxSjYw/SWxea0tOBGYJ)我的工廠只被調用一次;而不是每次路線都要解決。 – Lucas
@Lucas這可能是因爲工廠是單身人士,而且只有一次!會發生什麼情況是工廠被注入到控制器中(沒有任何方法被調用),讓你的控制器可以調用任何它喜歡的東西,例如,在你的控制器'StrategyOne.getContent()'中 – WickyNilliams