Подтвердить что ты не робот

$ routeProvider - зависимости от контроллера инъекции в зависимости от URL-адреса

Рассмотрим код:

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-адреса, я хочу, чтобы при создании MyController был добавлен StrategyOne или StrategyTwo или StrategyThree. Псевдокод, иллюстрирующий идею:

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?

4b9b3361

Ответ 1

Да! AngularJS может справиться с этим довольно легко thnx до свойства resolve определения маршрута (подробнее здесь).

Итак, в основном вы могли бы написать что-то вроде:

var app = angular.module("app", [], function($routeProvider) {
  $routeProvider
    .when("/page1", { controller: "MyController", resolve: {Strategy: "StrategyOne"}})
    .when("/page2", { controller: "MyController", resolve: {Strategy: "StrategyTwo"}})
    .when("/page3", { controller: "MyController", resolve: {Strategy: "StrategyThree"}});
});

чтобы правильная стратегия была введена в ваш контроллер! AngularJS DI в лучшем виде!

Существует очень хорошее видео-учебное пособие по темам resolve, вам может показаться интересным: http://www.youtube.com/watch?v=P6KITGRQujQ&list=UUKW92i7iQFuNILqQOUOCrFw&index=4&feature=plcp