1, angularJs的服务有provider,Service, Factory.
Factory是对Service的封装,Service是对Provider的封装.
Provide的源码如下:
function provider(name, provider_) { if (isFunction(provider_)) { provider_ = providerInjector.instantiate(provider_); } if (!provider_.$get) { throw Error('Provider ' + name + ' must define $get factory method.'); } return providerCache[name + providerSuffix] = provider_; }
Factory的源码如下:
function factory(name, factoryFn) { return provider(name, { $get: factoryFn
});
}
Service的源码如下:
function service(name, constructor) { return factory(name, ['$injector', function($injector) { return $injector.instantiate(constructor); }]);
}
从以上的代码中可以看出,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学习一下