AngularJs服務

服務是一個對象或函數(shù),對外提供特定的功能。

1、內置服務

  • $location是對原生Javascript中l(wèi)ocation對象屬性和方法的封裝。
   service.controller("DemoController",['$scope','$location',function ($scope,$location) {
//        獲取當前項目的絕對路徑
        $scope.absUrl = $location.absUrl();
//        協(xié)議
        $scope.protocol= $location.protocol()
//        端口
        $scope.port = $location.port()
//        當前路徑
        $scope.path = $location.path()
//        主機
        $scope.host = $location.host()
//        url
        $scope.url = $location.url();
    }])
location服務

在這里注意URL中它是獲取的錨點以后的地址。

  • $filter在控制器中格式化數(shù)據(jù)。
  service.controller("DemoController",['$scope','$filter',function ($scope,$filter) {
        // $filter是九種過濾器中任何一個
        $scope.price = 11.11;

        var currency = $filter('currency');

        $scope.price = currency($scope.price);

        $scope.str = 'hello angular';

        var uppercase = $filter('uppercase');

        $scope.str = uppercase($scope.str);

        $scope.str1 = $filter('limitTo')($scope.str, 2);
    }])
filter在控制器中格式化數(shù)據(jù)

過濾器(filter)也可以作為服務,他與我們在視圖(view)中調用過濾器是一樣的,只不過作為服務來講,是在控制器中格式化數(shù)據(jù),而普通的在視圖中就可以調用。

  • $log打印調試信息
   service.controller("DemoController",['$scope','$log',function ($scope,$log) {

        $log.info('普通信息');

        $log.warn('警告信息');

        $log.error('錯誤信息');

        $log.log('打印信息');

        $log.debug('調試信息');
    }])
打印調試信息
  • $http用于向服務端發(fā)起異步請求(重點)

$http本質上是對XMLHttpRequest對象的封裝,那么原生的的對象要發(fā)送一個請求:

    var xhr = new XMLHttpRequest;
// 打開一個鏈接
    xhr.open('get/post', 'example.php?name=eurasia');
        //設置一個請求頭
     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

        xhr.send('age=10');

$http是對原生的進行封裝,只要把上面的那些封裝成參數(shù)就可以了,$http(),是一個函數(shù),并不是每次請求的參數(shù)是一樣的,想要變成不一樣的,需要一個參數(shù),請求的方式既可以是get也可以是post,如果完成一個請求需要多個參數(shù)的時候,當一個對象來傳會更方便一些。那么.success是函數(shù)$http()的一個返回值,這樣也表示成功。

$http({
                url: 'example.php',
                // method: 'get',
                method: 'post',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                params: { // get 參數(shù)
                    name: 'eurasia',
                    sex: '男'
                },
                // data: 'age=10'
                data: { // post 傳參
                    age: 10
                }
            }).success(function (info) {
                // info 就是返回的數(shù)據(jù)
                $log.info(info);
            });

當我們使用get傳參的時候,要放到url后面去,在AngularJs中就不需要寫了,會有一個如下這樣的傳遞方式,最終就會拼接成example.php?name = eurasia這種形式

     params: { // get 參數(shù)
              name: 'eurasia',
              sex: '男'
                },

當我們使用post發(fā)送參數(shù)的時候要放到send中,在這專門為send提供了一個參數(shù)data,如下這種方式,這樣就相當于xhr.send('age=10');

     data: { // post 參數(shù)
              age: 10
                },

1、傳遞的數(shù)據(jù)可以是key=val&key=val形式,這種形式叫formData
2、Content-Type 設成 application/x-www-form-urlencoded
3、當請求數(shù)據(jù)類型不一樣,后端在接收的時采取方法也不一樣
4、假如上述方式以PHP為例可以使用$_POST接收
5、application/json;charset=UTF-8就是json對象形式傳
6、假如采用上述方式,以PHP為例$_POST就不能接收了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 通過AngularJS仿豆瓣一刻的案例:https://github.com/zhongxiaolian/doub...
    中小戀閱讀 1,892評論 1 21
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • 什么是服務? 在AngularJS中,服務是一個函數(shù)或者對象,可在你的AngularJS應用中使用 Angular...
    寧寧nn閱讀 160評論 0 0
  • 服務是一個函數(shù)或對象,可在你的 AngularJS 應用中使用服務是作為一個參數(shù)傳遞到 controller 中。...
    Lulus閱讀 167評論 0 0
  • 1.梁間燕 - 琵琶版(洪城,俊豪) 前奏莫名恐怖,整首曲子很悲傷。但是琵琶自帶的那種音質特點,又讓它聽起來十分舒...
    低眸廬州月閱讀 1,411評論 0 2

友情鏈接更多精彩內容