1.功能细分简解
config | Angular module模块的加载阶段-应用在此时还没有启动 |
run | Angular应用是第一个被运行的方法,相当于其它语言中的main()方法 |
factory | factory() 方法是创建和配置服务的最快捷方式,单例对象,在应用的生命周期内只会被调用一次 注入factory,相当于注入factory定义时的函数调用入口。 用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了 |
service | service() 可以注册一个支持构造函数的服务,它允许我们为服务对象注册一个构造 函数 注入service,相当于注入service定义时的function实例 Service 是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service 返回"this"。你把 service 传进 controller 之后,在controller里 "this" 上的属性就可以通过 service 来使用了。 |
provider | service和factory都是由$provide 服务创建的,$provide服务负责在运行时初始化这些提供者 注入provider,相当于注入provider内$get定义的函数实例的调用 Providers是唯一一种你可以传进 .config() 函数的 service |
constant | Angular常量,相当于其他语言中的静态常量类 |
value | 类似constant,value()方法和constant()方法之间最主要的区别是,constant可以注入到配置函数config中,而value不行 |
angular.module('myApp', [])
.config(function($provide, $compileProvider) {
$provide.factory('myFactory', function() {
var service = {};
return service;
});
$compileProvider.directive('myDirective', function() {
return {
template: '<button>Click me</button>'
};
});
});
angular.module('myApp', [])
.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'WelcomeController',
template: 'views/welcome.html'
});
})
.config(function(ConnectionProvider) {
ConnectionProvider.setApiKey('SOME_API_KEY');
});
angular.module('myApp', [])
.run(function($rootScope, AuthService) {
$rootScope.$on('$routeChangeStart', function(evt, next, current) {
// 如果用户未登录
if (!AuthService.userLoggedIn()) {
if (next.templateUrl === "login.html") {
// 已经转向登录路由因此无需重定向
} else {
$location.path('/login');
}
}
});
});
this is service
this is factory
this is provider
这个常量服务可以像其他服务一样被注入到配置函数中
123123123 from scope
from constant
from constant
123123123