我的角度版本是1.4.8。
我有一个由es-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)但是角抛出一个异常,上面写着“找不到提供者订购服务”。但是,在服务中添加尾部‘提供者’使其正常工作。
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'];为什么我需要在服务中添加“提供者”?有api文档来声明吗?
发布于 2015-12-28 04:27:27
在角度config阶段,您可以只使用提供程序。使用.service (或.factory)是创建提供程序的缩写。您也可以使用.provder,但是必须更显式地创建提供程序。
提供者和.config阶段用于配置应用程序中使用的服务。由于您没有进行任何配置,所以将orderService注入到.config中没有任何好处。
也许你可以把它注入.run
发布于 2015-12-28 09:06:32
您可以使用ngAnotate而不是手动执行此操作。
添加对构造函数的特殊注释:
export default class HomeController {
/*@ngInject*/
constructor(randomNames) {
this.randomNames = randomNames;
}
}然后添加ng注释插件到您的构建过程,它将描述您的注入。
https://stackoverflow.com/questions/34487520
复制相似问题