AngularJs 服务 广播

1, angularJs的服务有provider,Service, Factory.

  Factory是对Service的封装,Service是对Provider的封装.

  Provide的源码如下:

 1 function provider(name, provider_) {
 2 
 3  
 4   if (isFunction(provider_)) {
 5  
 6       provider_ = providerInjector.instantiate(provider_);
 7  
 8   }
 9  
10    if (!provider_.$get) {
11  
12        throw Error('Provider ' + name + ' must define $get factory method.');
13  
14    }
15  
16    return providerCache[name + providerSuffix] = provider_;
17  
18 }
 
Factory的源码如下:
 
1 function factory(name, factoryFn) {
2  
3  return provider(name, {
4  
5    $get: factoryFn
6 });
7
Service的源码如下:
 
1 function service(name, constructor) {
2  
3   return factory(name, ['$injector', function($injector) {
4  
5        return $injector.instantiate(constructor);
6  
7    }]);
8 }

从以上的代码中可以看出,Factory返回的对象是一个实例.Service在此基础上进行了二次的封装.这样就给使用提供了很大的方便
 
2. AngularJs广播
  AngularJs 的广播有$scope.$emit(),和$scope.broadcoast().
    发送广播: $scope.$emit(name, data),和$scope.broadcoast(name,data).
    接受广播: $scope.on(name,function(event,data){ });
    区别在于:  $emit 广播给父controller   $broadcast 广播给子controller
学习一下
原文地址:https://www.cnblogs.com/guoke-jsp/p/4993585.html