// retrieve an object from the injector by name
var serviceA = $injector.get('serviceA'); //从注入器查找serviceA对象,这时注入器会让实例serviceA的工厂函数factory创建一个新的实例serviceA返回
// always true because of instance cache
$injector.get('serviceA') === $injector.get('serviceA');
注入器真正强大之处在于让方法和类型能够通过注入器,请求到他们依赖的组件,而不需要自己加载依赖。
我们看看下面动态时间的这个例子:
<!doctype html>
<html ng-app="timeExampleModule">
<head>
<script src="https://code.angularjs.org/angular-1.1.0.min.js"></script>
<script">
angular.module('timeExampleModule', []).
factory('time', function($timeout) {
var time = {};
(function tick() {
time.now = new Date().toString();
$timeout(tick, 1000);
})();
return time;
});
function ClockCtrl($scope, time) {
$scope.time = time;
}
</script>
</head>
<body>
<div ng-controller="ClockCtrl">
Current time is: {{ time.now }}
</div>
</body>
</html>
你只要把需要的依赖写在函数参数里。当AngularJS调用这个函数时,它会自动填充好需要的参数。这个例子中,当ng-controller实例化构造器ClockCtrl的时候,它自动提供了指明的依赖time实例对象。
AngularJS 命名空间
为了防止意外的命名冲突, AngularJS为可能冲突的对象名加以前缀"$"。所以请不要在你自己的代码里用"$"做前缀,以免和AngularJS代码发生冲突。
希望你喜欢,并分享我的工作~带你走近AngularJS系列:
在 AngularJS 应用中通过 JSON 文件来设置状态
AngularJS 之 Factory vs Service vs Provider