angularJS(三)内置服务

服务

服务是一个对象或函数,对外提供特定的功能。
1.内置服务
1、$location是对原生Javascript中location对象属性和方法的封装。

app.controller('demoController',['$scope','$location',function($scope,$location){
    //绝对路径
    $scope.absUrl = $location.absUrl();
    //返回url协议
    $scope.protocol = $location.protocol();
    //返回url服务器使用的端口号
    $scope.port = $location.port();
    //当前路径
    $scope.path = $location.path();
    //返回一个url的锚部分:第一个#后面的内容
    $scope.hash = $location.hash();
    //返回url的查询字符串部分
    $scope.search = $location.search();
}]);

2、timeout&interval对原生Javascript中的setTimeout和setInterval进行了封装。

app.controller('demoController',['$scope','$timeout','interval',function($scope,$timeout,$interval){
    $timeout(function(){
        $scope.time = new Date();
},2000);
    $interval(function(){
        $scope.time = new Date();
},1000);

}]);

3、$log打印调试信息

app.controller('demoController',['$scope','$log',function($scope,$log){
    $log.log('打印信息');
    $log.info('普通信息');
    $log.warn('警告信息');
    $log.error('错误信息');
    $log.debug('调试信息');
}]);

4. http http的使用方式和jquery提供的$.ajax操作比较相同,均支持多种method的请求,get、post、put、delete等。

//$http本质是对XMLHttperRequest对象封装
app.controller('demoController',['$scope','$http',function($scope,$http){
    $http({
        url:'example.php',//请求地址
        method:'post',//请求方式也可以为get
        params:{//会被转换成查询字符串追加在URL后面。如果值不是字符串,会被JSON序列化。
            'name':'ari'
            //参数会转为?name=ari的形式
        },
        data:{name:'itcast',age:10},//post传参
        header:{//请求头信息
            'Content-Type':'application/x-www-form-urlencoded'
        }
    }).success(function(data,status,headers,config){
    //data响应体 status 相应的状态值
      headers是头信息的getter函数 ,可以结束一个参数,用来获取对应名字值
      config 是用来生成原始请求的完整设置对象。  
    }).error(function(data,status,headers,config){
    //失败回掉
    });
}]);

2.自定义服务
通过上面例子得知,所谓服务是将一些通用性的功能逻辑进行封装方便使用,AngularJS允许将自定义服务。
1、factory方法

    App.factory('showTime', ['$filter', function ($filter) {
    var now = new Date();
    now = $filter('date')(now,'yyyy/MM/dd');
    return now;
}]);

App.controller('DemoController', ['$scope', 'showTime', function($scope, showTime) {
    $scope.now = showTime.now;
}]);

2、service方法

App.service('showTime', ['$filter', function ($filter) {
    var now = new Date();
    this.now = $filter('date')(now,'yyyy/MM/dd');
}]);

App.controller('DemoController', ['$scope', 'showTime', function($scope, showTime) {
    $scope.now = showTime.now;
}]);

3、value方法定义常量 在介绍服务时曾提到服务本质就是一个对象或函数,所以自定义服务就是要返回一个对象或函数以供使用。

app.value('author','itcast');
app.controller('DemoController', ['$scope', 'atuhor',function($scope,author){
    $scope.author = author;
}]);

你可能感兴趣的:(angular-js)