AngularJS中的Provider

我们要从Dependency Injection(依赖注入)的对象中获取的数据或者功能,都是Injector给的。

Injector会创建两种对象:服务 专用对象

Injector要知道如何创建这些对象,就要用户自行去“注册”。

有五种注册方法:

Provider, Value, Factory, Service 和 Constant

构建Service

最强大的是Providor,其他方法只不过是Provider在某些条件下的简化版。

构建specialized objects

specialized objects包括:

controllers, directives, filters 和 animations

一般用各自的API去创建,比如:

module.controller(‘AppleController‘, function () {
    // some code
});

另外Provider也能够构建Filter(使得这个filter变得可配置):

// 用Provider构造filter
angular.module(‘Tommy‘, []).provider(‘matchMediaFilter‘, function () {
  var service = {
    // 这里是可配置的数据
    queries: {
      xs: ‘screen and (max-width: 480px)‘,
      sm: ‘screen and (min-width: 481px) and (max-width: 768px)‘,
      md: ‘screen and (min-width: 769px) and (max-width: 992px)‘,
      lg: ‘screen and (min-width: 993px) and (max-width: 1200px)‘,
      xl: ‘screen and (min-width: 1201px)‘
    },
    // 这个$get function是AngularJS规定必须的
    $get: function (
      $window
    ) {
      return function (unchanged, query, newVal) {
        var mq = service.queries[query];
        return ($window.matchMedia && $window.matchMedia(mq).matches)
          ? newVal
          : unchanged;
      };
    }
  };
  return service;
});

AngularJS中的Provider,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。