Angular(四)

作者: sheepmiee | 来源:发表于2017-04-25 17:27 被阅读19次

服务

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的

相关文章

网友评论

    本文标题:Angular(四)

    本文链接:https://www.haomeiwen.com/subject/jdovzttx.html