最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs封裝$http為factory的方法

 更新時(shí)間:2017年05月18日 17:21:47   作者:qingqingdezou_lei  
本篇文章主要介紹了angularjs封裝$http為factory的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

angularjs有本身封裝的ajax服務(wù)$http,因?yàn)橛脩T了jQuery的ajax,所以,自己封裝了一下angularjs的$http,代碼如下

app.factory('dataFactory', function ($http, $q){ 
  var factory = {}; 
  factory.getlist = function(endpoint, method, headers, params) { 
    var defer = $q.defer(); 
    if (method == 'GET') { 
      $http({ 
        url: endpoint, 
        method: "GET", 
        headers: headers, 
        params: params, 
      }).success(function (data) { 
        defer.resolve(data); 
      }). 
      error(function (data, status, headers, config) { 
        // defer.resolve(data); 
        defer.reject(data); 
      }); 
    } else { 
      $http({ 
        url: endpoint, 
        method: method, 
        headers: headers, 
        data: params, 
      }).success(function (data) { 
        defer.resolve(data); 
      }). 
      error(function (data, status, headers, config) { 
        // defer.resolve(data); 
        defer.reject(data); 
      }); 
    } 
    return defer.promise; 
    }; 
    return factory; 
}); 

在controller中引入dataFactory和$http即可使用更方便的調(diào)用ajax,一般情況下headers為

headers = {'Content-Type': 'application/json'};

params為一個(gè)json字符串

然后調(diào)用

dataFactory.getlist("/api/checkDuplicate", 'GET', headers, params).then(function(data) { 
//success函數(shù) 
},function(data){ 
//error函數(shù) 
}) 

但是其中又一次在項(xiàng)目中,后臺(tái)框架使用的是Struts框架,在一個(gè)Python中使用的很好的dataFactory,在這里的后臺(tái)取不到數(shù),最后發(fā)現(xiàn)是應(yīng)為header設(shè)置不對(duì),而且params的格式也不正確,可以把header修改為

 headers = {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'};

上面dataFactory中else添加轉(zhuǎn)換params代碼:

var param = function(obj) { 
        var query = '', name, value, fullSubName, subName, subValue, innerObj, i; 
 
        for(name in obj) { 
         value = obj[name]; 
 
         if(value instanceof Array) { 
          for(i=0; i<value.length; ++i) { 
           subValue = value[i]; 
           fullSubName = name + '[' + i + ']'; 
           innerObj = {}; 
           innerObj[fullSubName] = subValue; 
           query += param(innerObj) + '&'; 
          } 
         } 
         else if(value instanceof Object) { 
          for(subName in value) { 
           subValue = value[subName]; 
           fullSubName = name + '[' + subName + ']'; 
           innerObj = {}; 
           innerObj[fullSubName] = subValue; 
           query += param(innerObj) + '&'; 
          } 
         } 
         else if(value !== undefined && value !== null) 
          query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&'; 
        } 
        return query.length ? query.substr(0, query.length - 1) : query; 
        }; 
      $http({ 
        url: endpoint, 
        method: method, 
        headers: headers, 
        data: param(params), 
      }).success(function (data) { 
        defer.resolve(data); 
      }). 
      error(function (data, status, headers, config) { 
        // defer.resolve(data); 
        defer.reject(data); 
      }); 

只是個(gè)人覺(jué)得這個(gè)方式比較方便,記錄下來(lái),希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angular異步驗(yàn)證防抖踩坑實(shí)錄

    angular異步驗(yàn)證防抖踩坑實(shí)錄

    這篇文章主要給大家介紹了關(guān)于angular異步驗(yàn)證防抖踩坑的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用angular具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 淺談angular.js中實(shí)現(xiàn)雙向綁定的方法$watch $digest $apply

    淺談angular.js中實(shí)現(xiàn)雙向綁定的方法$watch $digest $apply

    Angular用戶都想知道數(shù)據(jù)綁定是怎么實(shí)現(xiàn)的。你可能會(huì)看到各種各樣的詞匯:$watch,$apply,$digest它們是如何工作的呢?這里我想回答這些問(wèn)題,其實(shí)它們?cè)诠俜降奈臋n里都已經(jīng)回答了,但是我還是想把它們結(jié)合在一起來(lái)講
    2015-10-10
  • 詳解基于Bootstrap+angular的一個(gè)豆瓣電影app

    詳解基于Bootstrap+angular的一個(gè)豆瓣電影app

    本篇文章主要介紹了基于Bootstrap+angular的一個(gè)豆瓣電影app ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-06-06
  • AngularJs每天學(xué)習(xí)之總體介紹

    AngularJs每天學(xué)習(xí)之總體介紹

    這篇文章主要為大家詳細(xì)介紹了Angularjs總體介紹及數(shù)據(jù)綁定部分內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題

    解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題

    今天小編就為大家分享一篇解決angular雙向綁定無(wú)效果,ng-model不能正常顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 利用Angularjs實(shí)現(xiàn)幻燈片效果

    利用Angularjs實(shí)現(xiàn)幻燈片效果

    AngularJS是Google開(kāi)發(fā)的純客戶端JavaScript技術(shù)的WEB框架,用于擴(kuò)展、增強(qiáng)HTML功能,它專為構(gòu)建強(qiáng)大的WEB應(yīng)用而設(shè)計(jì)。下面這篇文章我們來(lái)分享如何利用Angularjs實(shí)現(xiàn)幻燈片效果。
    2016-09-09
  • BootStrap+Angularjs+NgDialog實(shí)現(xiàn)模式對(duì)話框

    BootStrap+Angularjs+NgDialog實(shí)現(xiàn)模式對(duì)話框

    在完成一個(gè)后臺(tái)管理系統(tǒng)時(shí),需要用表格顯示注冊(cè)用戶的信息。但是用戶地址太長(zhǎng)了,不好顯示。所以想做一個(gè)模式對(duì)話框,點(diǎn)擊詳細(xì)地址按鈕時(shí),彈出對(duì)話框,顯示地址。下面小編給大家分享下實(shí)現(xiàn)方法,一起看下吧
    2016-08-08
  • Angular.js中window.onload(),$(document).ready()的寫(xiě)法淺析

    Angular.js中window.onload(),$(document).ready()的寫(xiě)法淺析

    這篇文章主要介紹了Angular.js中window.onload(),$(document).ready()的寫(xiě)法淺析,需要的朋友可以參考下
    2017-09-09
  • 淺談Angular HttpClient簡(jiǎn)單入門(mén)

    淺談Angular HttpClient簡(jiǎn)單入門(mén)

    本篇文章主要介紹了淺談Angular HttpClient 簡(jiǎn)單入門(mén),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • AngularJS開(kāi)發(fā)教程之控制器之間的通信方法分析

    AngularJS開(kāi)發(fā)教程之控制器之間的通信方法分析

    這篇文章主要介紹了AngularJS開(kāi)發(fā)教程之控制器之間的通信方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了AngularJS控制器之間通信的三種常用方式及相關(guān)使用技巧,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

金川县| 资阳市| 睢宁县| 客服| 新密市| 沈丘县| 新晃| 友谊县| 平度市| 南召县| 马龙县| 浦县| 阿城市| 双城市| 前郭尔| 双鸭山市| 岳阳县| 云和县| 冷水江市| 建宁县| 尚义县| 白城市| 日喀则市| 图木舒克市| 苍梧县| 凤阳县| 惠州市| 德令哈市| 晋州市| 太康县| 北流市| 柞水县| 南召县| 高安市| 汾阳市| 新野县| 巴塘县| 龙里县| 泗洪县| 河东区| 邵武市|