Angular(四)

服务

angular提供了五种自定义服务方式 provider factory" service constant value

内置$http

我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象,用法同jquery

$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的
配置内容。这个函数返回一个promise对象,具有success和error两个方法。返回一个promise对象

var promise=$http({
method:'GET',
url:"data.json"
});

由于$http方法返回一个promise对象,对象中有一个then方法来处理回调,方法中有两个参数,第一个是成功的回调第二个是失败的回调

$http.jsonp(
      $sce.trustAsResourceUrl(
      'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+$scope.query),
      {jsonpCallbackParam: 'cb'})
      .then(
      function (res) { //成功
                $scope.arrs = res.data.s;
            },
      function (err) { //失败
                console.log(err);
            });

provider

可配置,是唯一一种你可以传进 .config() 函数的服务:

app.provider('Calc',function () { 
        this.currency = '$'; //在实例上增加了属性
        this.$get = function () {
            return {
                sum: (a,b) => this.currency +(a+b)
            }
        };
    });

Calc为服务的名字,第二个参数接受一个构造函数,实例对象上要有一个¥get方法,$get方法必须要返回一个对象obj,这个对象就是真正被注入的服务.

  • 构造函数本质是要造一个对象,所以provider的第二个函数参数也可以直接返回一个对象,这个对象上要有一个$get方法,$get方法必须要返回一个对象obj
app.provider('name',function(){
  ....
  return {
    ...
    $get:function(){
      ...
      return obj
    }
     }
})
  • 在要配置的服务后面 增加Provider后缀
    app.config(function (CalcProvider) {
    //console.log(CalcProvider); //是provider的一个实例
    CalcProvider.currency = '£'
    });
  • 执行顺序:先执行provider第二个参数函数中$get函数之前的语句,再执行config配置,再执行$get函数,返回被注入的服务

factory

app.factory('name',function(){return obj})
factory 不具有配置能力,因为$get方法在我们的config方法后执行 配置后会被覆盖掉

serviceApp.factory('myConfig',function(){
    var myname = 'code_bunny';
    var age = 12;
    var id = 1;
    return {
        name: myname,
        age: age,
        getId: function(){
            return id
        }
    }
});

name为服务的名字,第二个参数传入一个函数,函数需要有一个返回值obj,返回一个对象.实际被注入的服务就是这个对象.

其他自定义服务

最大的是provider factory是基于provider的 service 是基于factory的 value是基于factory的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,312评论 19 139
  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    2e9a10d418ab阅读 5,186评论 0 10
  • 出于内存占用和性能的考虑,控制器只会在需要时被实例化,并且不再需要就会被销毁。这意味着每次切换路由或重新加载视图时...
    oWSQo阅读 3,342评论 0 1
  • 1、angularjs的几大特性是什么? 双向数据绑定、依赖注入、模板、指令、MVC/MVVM 2、列举几种常见的...
    秀才JaneBook阅读 5,404评论 0 22
  • 销售技巧与话术,如何做好客情关系? 做销售,如果客户提出"业务人情",举个例子,重要客人的家人(做健身.保险等),...
    劲祥阅读 7,787评论 0 1