http和服务器通信详解,service详解及实例代码

$http

factory

话不多说,我们下面直接来看实现的示例代码

AngularJS提供了$http服务来同服务端进行通信,$http服务队浏览器的XMLHttpRequest对象进行了封装,让我们可以以ajax的方式来从服务器请求数据。

用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把
service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过
factory 使用了。

【一】Angular 路由状态发生改变时可以通过’ $stateChangeStart ‘、’
$stateChangeSuccess ‘、’
$stateChangeError‘监听,通过注入’$location’实现状态的管理

在AngularJS中与远程HTTP服务器交互时会用一个非常关键的服务-$http。

app.controller('myFactoryCtrl', function($scope, myFactory){
  $scope.artist = myFactory.getArtis();
});
app.factory('myFactory', function(){
  var _artist = '';
  var service = {};

  service.getArtist = function(){
    return _artist;
  }
  return service;
});

代码示例如下:

      1、$http是angular中的一个核心服务,利用浏览器的xmlhttprequest或者via
JSONP对象与远程HTTP服务器进行交互。

service

function run($ionicPlatform, $location, Service, $rootScope, $stateParams) { 
  //路由监听事件 
  $rootScope.$on('$stateChangeStart', 
    function(event, toState, toParams, fromState, fromParams) { 
     console.log(event); 
     console.log(toState); 
     console.log(toParams); 
     console.log(fromState); 
     console.log(fromParams); 
     if (toState.name == "homePage") { 
      //获取参数之后可以调请求判断需要渲染什么页面,渲染不同的页面通过 $location 实现 
      if (toParams.id == 10) { 
       //$location.path();//获取路由地址 
       // $location.path('/validation').replace(); 
       // event.preventDefault()可以阻止模板解析 
      } 
     } 
    }) 
   // stateChangeSuccess 当模板解析完成后触发 
  $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { 

  }) 

  // $stateChangeError 当模板解析过程中发生错误时触发 
  $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { 

  }) 
 } 

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

Service 是用”new”关键字实例化的。因此,你应该给”this”添加属性,然后
service 返回”this”。你把 service 传进 controller 之后,在controller里
“this” 上的属性就可以通过 service 来使用了。

【2】在页面渲染中 可通过’$viewContentLoading ‘和 ‘
$viewContentLoaded‘监听页面渲染状态:渲染开始和渲染结束。

      3、$http的各种方式的请求更趋近于rest风格。

app.controller('myFactoryCtrl', function($scope, myService){
  $scope.artist = myService.getArtis();
});
app.service('myService', function(){
  var _artist ='';
  this.getArtist = function(){
    return _artist;
  }
});

(在控制器中添加以下代码实现监听)

     
4、在controller中可通过与$scope同样的方式获取$http对象,e.g. function controller($scope,$http){}

provider

// $viewContentLoading- 当视图开始加载,DOM渲染完成之前触发,该事件将在$scope链上广播此事件。 
scope.$watch('$viewContentLoading',function(event, viewConfig){ 
 alert('模板加载完成前'); 
}); 
//$viewContentLoaded- 当视图加载完成,DOM渲染完成之后触发,视图所在的$scope发出该事件。 
$scope.$watch('$viewContentLoaded',function(event){ 
  alert('模板加载完成后'); 
}); 

下面进行$http服务的使用说明,调用如下:

Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在
service 对象启用之前,先进行模块范围的配置,那就应该用 provider。

总结

$http(config).success(function(data,status,headers,config){}).error(function(data,status,headers,config){});
app.controller('myProviderCtrl', function($scope, myProvider){
  $scope.artist = myProvider.getArtist();
  $scope.data.thingFromConfig = myProvider.thingOnConfig;
});
app.provider('myProvider', function(){
  this._artist = '';
  this.thingFromConfig = '';

  this.$get = function(){
    var that = this;
    return {
       getArtist: function(){
         return that._artist;
       },
       thingOnConfig: that.thingFromConfig
    }
  }
});
app.config(function(myProviderProvider){
  myProviderProvider.thingFromConfig = 'This was set in config()';
});

以上就是这篇文章的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

$http服务是一个接受一个参数的函数,参数的类型是对象,用来配置生成的http的请求,该函数返回一个promise对象

value和constant

您可能感兴趣的文章:

  • Angularjs制作简单的路由功能demo
  • AngularJS
    路由详解和简单实例
  • AngularJS路由实现页面跳转实例
  • angular.js
    路由及页面传参示例
  • 使用AngularJS对路由进行安全性处理的方法
  • AngularJS
    路由和模板实例及路由地址简化方法(必看)
  • 详解Angular4中路由Router类的跳转navigate
  • angular.js之路由的选择方法
  • AngularJS监听路由变化的方法
  • AngularJS中的路由使用及实现代码
var promise = $http({
 method:'GET',
 url:'/api/user.json'
});

promise.then(function(resp){}, function(resp){})
$provide.value('myValue', 10);
$provide.constant('myConstant', 10);
/*


二者的区别:
1. value可以被修改,constant一旦声明就无法修改
2. value不可以在config中注入,constant可以。
*/

$http请求的配置对象

provider、factory、service三者的关系

$http()接受的配置对象可以包含以下属性:

app.provider('myDate', { 
  $get: function() { 
   return new Date(); 
  }
});
//可以写成
app.factory('myDate', function(){ 
 return new Date();
});
//可以写成
app.service('myDate', Date);

     method:http请求方式,可以为GET,DELETE,HEAD,JSONP,POST,PUT

总结

发表评论

电子邮件地址不会被公开。 必填项已用*标注