Angular:依赖注入

使用依赖注入

  • 像services, directives, filters, 和animations这些组件被定义经过可注入的factory方法或者构造函数。这些组件能够注入"service" and "value" 组件做为他们的依赖;
  • 经过构造函数定义的控制器能够注入任意"service" and "value"做为它的依赖,并且还能注入特别的依赖;
  •  run 方法接受一个能注入"service", "value" and "constant"做为依赖的函数,注意不能注入"providers"到 run 代码块里
  •  config 方法接受一个能注入"provider" and "constant" 组件做为依赖的函数,注意不能注入"service" or "value"到配置项里

Factory 方法

使用factory function定义一个directive, service, or filter。factory方法注册的是一个模块。如下是推荐声明factory方法的方式:数组

angular.module('myModule', [])
.factory('serviceId', ['depService', function(depService) {
  // ...
}])
.directive('directiveName', ['depService', function(depService) {
  // ...
}])
.filter('filterName', ['depService', function(depService) {
  // ...
}]);

Module Methods

经过调用config 和run 方法指定函数运行配置和运行时模块。这些函数都是可注入依赖的就像上面factory函数那样。ide

angular.module('myModule', [])
.config(['depProvider', function(depProvider) {
  // ...
}])
.run(['depService', function(depService) {
  // ...
}]);

Controllers

控制器是“类”或“构造函数”,负责提供在模板中支持声明性标记的应用程序行为。推荐使用数组表示法来声明控制器:函数

someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) {
  ...
  $scope.aMethod = function() {
    ...
  }
  ...
}]);

services不一样,在应用程序中能够有许多相同类型的控制器的实例。spa

并且,额外的依赖在控制器也是可用的:code

  • $scope: 控制器与DOM元素密切相关所以能够访问scope。其余像services的组件只能访问$rootScope;
  • resolves: 若是控制器实例化是route的一部分,那么route部分的任何值解析注入到控制器均可用
相关文章
相关标签/搜索