美文网首页
2017-5-25 AngularJs

2017-5-25 AngularJs

作者: GodlinE | 来源:发表于2017-05-25 14:47 被阅读0次

    service 自定义服务

    1.指令

    • 内置指令
    • 自定义指令
    app.directive('xmg',function(){
            return {
                    //指令类型
                    restrict:'EA',
                    //指令模版
                    template:'',
                    //是否替换原有指令
                    replace:'true',
                    //是否保留标签内容
                    transclude:'true'
            }
    })
    

    2.过滤器

    • 内置过滤器
    • 自定义过滤器
    app.filter('filterName',function(){
            return function(input){
    
            }
    })
    

    3.服务

    • 内置服务
    • 自定义服务
    • angular 在一开始就帮我们定义一些功能,我们可以直接使用这些功能,都是一个方法或者一个对象的形式来调用指定的功能。想要使用这些服务,必须要注入。所谓 服务 是将一些通用性的功能逻辑进行封装方便使用,angularJs 允许自定义服务
    • 自定义服务目的:把公用的功能,给封装到一起,进行复用
    • 服务本质就是一个对象,或者以方法方式存在
    • 注意系统内置服务前加 $ ,自定义服务的不需要加
    app.service('xmgService',function(){
            this.say=function(){
                    console.log('hello');
            }
            this.showTime = function(){
                    var curTime = new Date();
            }
    })
    
    app.service('xmgService',function($filter){
            this.say = function(){
                      console.log('hello');
            }
            this.showTime = function(){
                    var curTime = new Date();
    //var date = $filter('date');
    //return date(curTime,'yyyy-MM-dd hh:mm:ss')
                    return $filter('date')(curTime,'yyyy-MM-dd hh:mm:ss');
            }
    })
    

    factory 自定义服务

    var app = angular.module('app',[]);
    app.controller('skController',['$scope',function($scope){
            myFactory();
            myFactory2.myTime();
            myFactory2.say();
    }])
    
    app.factory('myFactory',function(){
            return function(){
                    console.log('执行了myFactory')
            }
    })
    
    app.factory('myFactory2',function(){
              function showTime(){
                      console.log('执行了myFactory2');
              }
              function mySay(){
                      console.log('hello');
              }
              return {
                      myTime:showTime,
                      say:mySay
              }
    })
    

    服务的参数格式化

    • 将 json 格式 转化成 formData 格式
    原来 post 请求格式, 传参使用不方便
    $http({
            url:'post.php',
            method:'post',
            data:'name=sk&age=666'       
    })
    //考虑将 josn 对象参数格式转化成 formData 形式
    
    方式一
    app.factory('formData',function(){
            return function(obj){
                    var res ='';
                    for(key in obj){
                            res += key + '=' +obj[key] + '&';
                    }
                    //最后一位多了一个&
                    res = res.slice(0,-1);    
                    return res;
            }
    })
    
    方式二
    app.factory('formData2',function(){
             function formDataPost(obj){
                    var res = '';
                    for(key in obj){
                              res += key+ "=" +obj[key] +'&';
                      }
                    res = res.slice(0,-1);
                    return res;
              }
              return {
                      dataPost:formDataPost
              }
    })
    
    方法三自定义服务
    app.service('formDataService',function(){
            this.form = function(obj){
                    var res = '';
                    for(key in obj){
                            res += key + '=' + obj[key] + '&'
                    }
                    res=res.slice(0,-1);
                    return res;
            }
    })
    
    • 使用函数
    var param ={
            name:'sk',
            age:666
    }
    $http({
            url:'post.php',
            method:'post',
            //方式一
            data:formData(param)
            //方式二
            data:formData2.dataPost(param)
            //方式三
            data:formDataService.form(params)
    })
    

    value 自定义服务

    • value 表现形式上是一个服务
    • 本质上可看作是一个常量,到那时以服务的方式使用
    app.controller('skController',["$scope","userName",function($scope,$userName){
              console.log(userName);
              $scope.name = 'aaa';
    }])
    app.value('userName','sk')
    

    相关文章

      网友评论

          本文标题:2017-5-25 AngularJs

          本文链接:https://www.haomeiwen.com/subject/eznaxxtx.html