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
学习一下