2014-02-09 1 views
2

Я хочу настроить угловой UI-маршрутизатор $ urlRouterProvider $ stateProvider «динамически» на основе некоторой конфигурации, прочитанной из ресурса JSON , Я пробовал:

.config(function ($stateProvider, $urlRouterProvider, $resource) { 

, но это не работает («неперехваченная Ошибка: Неизвестный поставщик: $ ресурс из mui.jsAngularAddressbookApp»), потому что (я понимаю) «вы можете только вводить провайдер (не экземпляры) в блоки конфигурации ". Затем я попробовал:

.run(function ($stateProvider, $urlRouterProvider, $resource) { 

, но которые не могут работать либо («неперехваченная Ошибку: Неизвестный поставщик: $ stateProviderProvider < - $ stateProvider»), потому что (опять же я понимаю принцип) «Вы можете только вводить экземпляры (не Провайдеры) в блоки запуска.

Я взломал/работал вокруг него, просто используя jQuery.getJSON вместо $ resource, но это, конечно, не «способ AngularJS» (у него есть какие-то реальные недостатки?).

Какое «правильное» решение для этого?

+0

На самом деле это, вероятно, текущее ограничение углового UI маршрутизатора ... обратите внимание https://github.com/angular-ui/ui-router/issues/874 :( – vorburger

ответ

0

У меня пока нет ответа, но мне удалось получить доступ к ui-router во время настройки. Кредиты отправляются главным образом в другой репортер проблемы github. https://github.com/angular-ui/ui-router/pull/120. Я также расскажу о том, как получить доступ к конфигурации во время выполнения.

В это время вы можете добавлять маршруты только после того, как вы попытаетесь добавить маршрут более одного раза. Извините за CoffeeScript. На данный момент я все еще смотрю на способ загрузки асинхронных маршрутов.

angular.module('app').provider 'RouteConfig', 
    ['$stateProvider', ($stateProvider) -> 
    # this will configure the routes from the received json 
    # using $stateProvider.state() like in app.config 
    configurator = ($http) -> 
     console.log $stateProvider 
    updateRoutes: -> 
     configService.get().then (conf) -> 
     # add routes here from 'conf' 

    @$get = ['configService', (configService, $http) -> 
     new configurator(configService, $http) 
    ] 
    return 
] 
+0

Я просто побежал в этот проект: https://github.com/afterglowtech/angular-detour, который, по-видимому, разрешает конфигурацию маршрутизации времени выполнения: «позволяет выполнять редактирование конфигурации во время выполнения» и «поддерживает определения ленивой загрузки/обновления с сервера через AJAX» –

Смежные вопросы