AngularJS中的Provider

原创
2014/08/08 11:59
阅读数 6.1K

我们要从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;
});
展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部