2016-04-04 2 views
2

Я использую angularjs 1.2.23, и я хочу создать поставщика, который будет загружать состояния на основе некоторого результата, возвращаемого службой. Рассмотрю ниже код ственного образцаКак загружать угловые состояния динамически с помощью службы пользователя

app.provider("myStateProvider", function ($stateProvider, CustomService) { 
 

 
    CustomService.getMenus({}, {}).$promise.then(function (menu) { 
 
    $stateProvider.state(menu); 
 
    }); 
 

 
});

Он бросает меня ниже error- Неизвестного поставщика: CustomServiceProvider

Любых предложения ...

+0

У вас есть приложение app.provider («CustomService», ..... '? –

+0

Имейте службу, такую ​​как app.service ('CustomService', function ($ resource) {}); –

+0

Пожалуйста, взгляните на мой ответ, надеюсь, что это поможет –

ответ

0

Когда вы впрыснуть provider к приложению , это называется фазой конфигурации приложения. На этом этапе услуги недоступны, поскольку они еще не созданы. (Ссылка https://docs.angularjs.org/guide/providers).

Когда Вы вводите service, factory, controller - Это впрыскивается в перспективы блока - там вы можете вводить услугу (например, CustomService), а не поставщик - Что вы не вводили, так что это нормально (Ссылка https://docs.angularjs.org/guide/di).

Вы можете создать поставщика для вашего CustomService службы:

app.provider("CustomService", function() { 
    ... LOGIC GOES HERE (PUT GENERAL LOGIC RELATED TO THE SETUP PHASE OF THE SERVICE) 
}); 

И вы будете иметь возможность вводить его в myStateProvider позже:

app.provider("myStateProvider", function ($stateProvider, CustomServiceProvider) { ... }); 

Последняя вещь: Не добавляйте поставщика на имя провайдера, просто выполните:

app.provider("myState", function ($stateProvider) { 
}); 

ПОЧЕМУ? Потому что, если вам нужно его вводить, вам нужно будет ввести myStateProviderProvider (Угловая добавляет «Поставщик» автоматически)

+0

Привет, Alon, спасибо за ваши объяснения, но моя проблема в том, что мне нужно некоторые данные на этапе конфигурации с помощью ** $ ресурса ** .Если я могу использовать 'app.provider (« CustomService », function ($ resource) { ... ЛОГИКА ИДЕТ ЗДЕСЬ });' I ' Итак, основная проблема заключается в загрузке некоторых данных с использованием службы отдыха на этапе угловой конфигурации. –

+0

Вы не сможете ввести '$ resource' в' провайдер', потому что это в фазе конфигурации вы можете ввести '$ resourceProvider' (не уверен, однако, если это поможет). Обратите внимание, что вы можете разрешать зависимости до того, как вы введете определенное состояние в своем приложении (ознакомьтесь с описанием ** маршрута ** здесь https://docs.angularjs.org/api/ngRoute/provider/$routeProvider) –

+0

И вот полный учебник http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx –

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