这是我从挖掘AngularJS代码中找不到的东西,也许你可以帮助解决这个谜团。Angular JS:为什么module.config注入和控制器注入之间的区别?
要显示它,我添加了一个服务于AngularJS种子项目:
function MyServiceProvider() {
console.log('its my service');
this.providerMethod = providerMethod;
function providerMethod() {
console.log('its my service.providerMethod');
}
this.$get = $get;
function $get() {
var innerInjectable = {
name: 'stam'
};
return innerInjectable;
}
}
var serviceModule = angular.module('myApp.services', []).
value('version', '0.1').
provider('myservice',MyServiceProvider);
你可以看到,这个提供程序公开$获得和一定的“providerMethod”。现在
,对于注射用法: 如果我们所说的配置,我们可以注入全班并访问了“外”供应商的方法:
serviceModule.config(function(myserviceProvider) {
console.log('myServiceProvider:',myserviceProvider);
myserviceProvider.providerMethod();
});
但是,当我们注入这一个控制器(注意提供商少名),只有$得到的返回值暴露:
function MyCtrl1(myservice) {
console.log('MyCtrl1.myservice =',myservice,myservice.name);
}
MyCtrl1.$inject = ['myservice'];
控制台输出如下,它应该: 其我的服务 myServiceProvider: 构造{providerMethod:函数,$获得:功能} 它我service.providerMethod MyCtrl1.myservice = {对象名称: “斯塔姆”}斯塔姆
任何一个可以解释的区别?原因? 任何千恩万谢认为
利奥尔
PS:我已经看到了角的UI界面new路由器这种技术(精品工程!)。我需要访问外部提供者类以在茉莉花和其他地方进行注入 - 无济于事
[Service vs provider vs factory?]的可能重复(http://stackoverflow.com/questions/15666048/service-vs-provider-vs-factory) – Pureferret 2015-02-24 11:56:41