angularJs服务与依赖注入

服务就是AngularJs框架中用于定义通用功能的地方。它在功能上相似于jQuery的extend,可是使用方法上彻底不一样。json

  1. app.run中使用AngularJs提供的$location服务。app

  2. app.run中使用Angularjs提供的$http服务。框架

  3. 使用app.serverapp.factory向Angularjs注册服务,并在app.run里经过依赖注入的方式使用它。搞清楚“服务的工厂函数”、“服务对象”和“依赖注入”之间的关系。函数

一个简单的http get请求

好比一个json对象 data.json {'message':'hello world'}

var app = angular.modular('s.app',[]);
app.run(function($http, $rootScope) {
    $http.get('data.json')
         .success(function(data) {
            console.log(data)
         })
         .error(function(){
            console.log(data);
         })
})

一个标准http用法

$http({
    url: 'data.json',
    method: 'get',
    data: {
        id: 'box'
    }
}).success(function(data){
      console.log(data)    
  })
  .error(function(data){
      console.log(data)
  })

自定义服务

两个参数,第一个参数是:服务的名字
          第二个参数是:服务的构造器
app.service('DemoServive', function() {
    this.message = 'hello world'
})
在依赖注入的时候,输入服务的名字,就能拿到‘服务对象’,服务对象其实就是用咱们给的构造器建立出来的。
app.run(function(DemoService, $rootScope) {
    $rootScope.data = {
        message: DemoService.message
    }
})

实现一个简易路由

就是如同锚连接同样,只改变地址栏的变化,网页不刷新。this

var app = angular.module('s.app', []);
app.run(function($location, $rootScope) {
    console.log($location.path()); //输出的就是地址栏#后边的东西 
})

监听hash值的变化url

var app = angular.module('s.app', []);
app.run(function($location, $rootScope) {
    $rootScope.location = $location;

    //在$rootScope上,执行location.path()求得一个值,当这个哈数求得的值变化时,就执行咱们的回调函数
    $rootScope.$watch('location.path()',funcion(){
        var hash = $location.path();
        // 当hash发生改变时,更改存储下来的页面状态
        switch(hash) {
            case '/a':
                data.state = 'a';
                break;
             case '/b':
                data.state = 'b';
                break;
             case '/c':
                data.state = 'c';
                break;
        }
    
        switch(data.state){
             case 'a':
                data.msg = 'a';
                break;
             case 'b':
                data.msg = 'b';
                break;
             case 'c':
                data.msg = 'c';
                break;
        }
    })
})

自制路由服务

步骤:code

  1. 建立一个新的模块,用于存放咱们的服务。
  2. 咱们的额服务容许用户对路由进行配置,用户 传入路由配置,咱们再去监听hash的变化。
  3. 当hash变化时,咱们对比当前的hash和用户配置的url,决定哪一个状态被激活,而后再执行这个状态自带的callback函数来更新界面。
  4. 使用时,记得在声明app模块时候去依赖router模块。
  5. 依赖注入这个建立的服务。,调用config函数对路由作配置。
  6. 这个时候就能够点击连接查看效果。

服务的工厂函数

第一个参数是:服务的名字
第二个参数是:服务的工厂函数
app.factory('DemoService', function() {
    //服务的工厂函数的返回值。才是服务对象
    
    return {
        msg: 'this is factory'
    }
})
相关文章
相关标签/搜索