首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用es6时,为什么我必须在服务名称中添加尾“Provider”

当我使用es6时,为什么我必须在服务名称中添加尾“Provider”
EN

Stack Overflow用户
提问于 2015-12-28 04:02:09
回答 2查看 62关注 0票数 1

我的角度版本是1.4.8。

我有一个由es-6类定义的服务。

代码语言:javascript
复制
class OrdersService {
    ...
}

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

我想把它注入另一个模块

代码语言:javascript
复制
import ordersService from 'orders.service'

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

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

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

但是角抛出一个异常,上面写着“找不到提供者订购服务”。但是,在服务中添加尾部‘提供者’使其正常工作。

代码语言:javascript
复制
routes.$inject = ['$stateProvider', 'ordersServiceProvider'];

在本文中,作者不添加,但仍在工作。http://angular-tips.com/blog/2015/06/using-angular-1-dot-x-with-es6-and-webpack/

代码语言:javascript
复制
class RandomNames {
  ....
}

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




import randomNames from 'randomNames'

export default class HomeController {
  ....
}

HomeController.$inject = ['randomNames'];

为什么我需要在服务中添加“提供者”?有api文档来声明吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-28 04:27:27

在角度config阶段,您可以只使用提供程序。使用.service (或.factory)是创建提供程序的缩写。您也可以使用.provder,但是必须更显式地创建提供程序。

提供者和.config阶段用于配置应用程序中使用的服务。由于您没有进行任何配置,所以将orderService注入到.config中没有任何好处。

也许你可以把它注入.run

票数 4
EN

Stack Overflow用户

发布于 2015-12-28 09:06:32

您可以使用ngAnotate而不是手动执行此操作。

添加对构造函数的特殊注释:

代码语言:javascript
复制
export default class HomeController {
   /*@ngInject*/
   constructor(randomNames) {
     this.randomNames = randomNames;
   }
}

然后添加ng注释插件到您的构建过程,它将描述您的注入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34487520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档