为什么我必须添加尾部'提供商'到服务名称,当我使用es6时
Why I must add the tail 'Provider' to Service Name, when I used es6
我的angular版本是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)
但Angular抛出一个异常,称"找不到提供商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'];
为什么我需要将"提供者"添加到服务中?有api文档可以声明吗?
在角度config
阶段,您只能使用提供程序。使用.service
(或.factory
)是创建提供程序的简写。您也可以使用.provder
,但必须更明确地创建提供程序。
提供者和.config
阶段用于配置应用程序中使用的服务。由于您没有进行任何配置,因此将orderService
注入.config
不会带来任何好处。
也许您可以将其注入.run
您可以使用ngAntate而不是手动执行此操作。
添加对您的构造函数的特别评论:
export default class HomeController {
/*@ngInject*/
constructor(randomNames) {
this.randomNames = randomNames;
}
}
然后将ng注释插件添加到您的构建过程中,它将为您描述注入。
相关文章:
- AWS Cognito:通过 google 获取“请提供有效的公共提供商”
- 角度模态服务未知提供商
- 选择下拉列表需要在选中时显示提供商的详细信息-无法通过我的脚本显示url
- 从服务提供商 IP 地址获取设备 IP 地址
- JsFiddle:未知提供商:$intervalProvider <- $interval
- 工厂和控制器,未知提供商
- 未知提供商:$resourceProvider - AngularJS
- 未知提供商:捆绑后$resourceProvider
- ES2015 单例或服务提供商或模块,用于敲除.js组件
- $http提供商向 Github API 发出外部请求,但不向 Google 地图 API 发出请求
- Angular Js:工厂、服务和提供商.何时使用哪个
- AngularJS + RequireJS.未知提供商:$routeProvider
- 为什么我必须添加尾部'提供商'到服务名称,当我使用es6时
- Chrome中阻止的视频-运行视频提供商的不安全内容
- 如何在AngularJs中设置来自其提供商的服务的依赖关系
- 单个<提供商>用于许多组件
- 从PhoneGap JavaScript访问Android上的内容提供商
- 未知提供商AngularJs在添加“时”;.运行”;
- AngularJS提供商和模型
- Angular未知提供商错误