2015-12-28 1 views
1

Моя угловая версия - 1.4.8.Почему я должен добавить хвост «Provider» в Service Name, когда я использовал es6

Я услуга определяется с эс-6 класса

class OrdersService { 
    ... 
} 

export default angular.module('services.orders', []) 
    .service('ordersService', OrdersService) 
    .name; 

Я хочу, чтобы внедрить его в другой модуль

import ordersService from 'orders.service' 

function routes($stateProvider, ordersService) { 
     .... 
} 

routes.$inject = ['$stateProvider', 'ordersService']; 

export default angular 
    .module('orders',[ordersService]) 
    .config(routes) 

Но Угловой бросок сказал исключение "не удалось найти OrderService провайдера , Но добавьте хвост «Провайдер» для обслуживания, заставив его работать.

routes.$inject = ['$stateProvider', 'ordersServiceProvider']; 

В этой статье автор не добавляет, а продолжает работать. http://angular-tips.com/blog/2015/06/using-angular-1-dot-x-with-es6-and-webpack/

class RandomNames { 
    .... 
} 

export default angular.module('services.random-names', []) 
    .service('randomNames', RandomNames) 
    .name; 




import randomNames from 'randomNames' 

export default class HomeController { 
    .... 
} 

HomeController.$inject = ['randomNames']; 

Почему мне нужно добавить 'Provider' к службе? Есть ли api doc, чтобы объявить это?

+0

'функции маршрутов ($ stateProvider, $ ordersService)' мы не используем '$' с ними .. может быть, вот что вызвало у вас проблемы – Minato

+0

@Minato Спасибо, а $ - ошибка ввода. Исключение составляет $ inject. –

ответ

4

Во время угловой фазы config вы можете использовать поставщиков. Использование .service (или .factory) является сокращением для создания поставщика. Вы также можете использовать .provder, но тогда вам нужно будет создать провайдера более явно.

Провайдеры и фаза .config используются для настройки сервисов для использования в приложении. Поскольку вы не выполняете какую-либо конфигурацию, вы не получаете никакой пользы от ввода orderService в .config.

Может быть, вы могли бы привнести в .run

0

Вы можете использовать ngAnotate а не делать это вручную.

Добавить специальный комментарий на конструкторе:

export default class HomeController { 
    /*@ngInject*/ 
    constructor(randomNames) { 
    this.randomNames = randomNames; 
    } 
} 

Затем добавьте нг-аннотирования плагин для процесса сборки и он расскажет, что инъекции для вас.