• AugularJS从入门到实践(二)


      前  言

     前端 

        AngularJS是为了克服HTML在构建应用上的不足而设计的。(引用百度百科)

    本篇学习主要有两个部分:

      ①【AngularJS 过滤器】
      ②【AngularJS  服务 】
     
              
    1、AngularJS 过滤器

    【常用指令】
     AngularJS 过滤器:过滤器可以使用一个管道字符(|)添加到表达式和指令中。
             
            
             >>>系统内置过滤器:
            
                currency     格式化数字为货币格式。
                filter     从数组项中选择一个子集。
                lowercase     格式化字符串为小写。
                orderBy     根据某个表达式排列数组。
                uppercase     格式化字符串为大写。
            

    [lowercase、uppercase、currency]
        <body ng-app="app" ng-controller="ctrl">
            <p>{{"aBcDeF"|lowercase}}</p>     // 输出为abcdef
            <p>{{"aBcDeF"|uppercase}}</p>     //输出为ABCDEF    
            <p>{{123456|currency}}</p>        //输出为$123,456.00
        </body>
        
        <script language="JavaScript" src="angular-1.5.6/angular.js"></script>
        <script type="text/javascript">
            angular.module("app",[])
            .controller("ctrl",function($scope){
                
            })
        
        </script>    
    【filter和orderBy】

        写到这里就不得不说一下angular中的 ng-repeat 指令    

        ng-repeat 指令用于循环输出指定次数的 HTML 元素。

        集合必须是数组或对象。

     

     
     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <link rel="stylesheet" href="libs/bootstrap.css" />
     7     </head>
     8     
     9     <body ng-app="app" ng-controller="ctrl">
    10         
    11         <form class="form-horizontal">
    12             
    13         </form>
    14         <div class="form-group">
    15             <label>请输入筛选信息:</label>
    16             <input type="text" ng-model="search" />
    17         </div>
    18         <table class="table table-bordered">
    19             <thead>
    20                 <tr>
    21                     <th>姓名</th>
    22                     <th>年龄</th>
    23                     <th>成绩</th>
    24                 </tr>
    25             </thead>
    26             <tr ng-repeat="item in classes| filter:search | orderBy:'grade'">
    27                 <td>{{item.name}}</td>
    28                 <td>{{item.age}}</td>
    29                 <td>{{item.grade}}</td>
    30             </tr>
    31         </table>    
    32     </body>
    33     <script src="libs/angular.js"></script>
    34     <script type="text/javascript">
    35         var app = angular.module("app",[])
    36          .controller("ctrl",function($scope){
    37             $scope.classes = [
    38                 {name:"张二",age:"22",grade:"88"},
    39                 {name:"张三",age:"21",grade:"89"},
    40                 {name:"李四",age:"20",grade:"90"},
    41                 {name:"李五",age:"21",grade:"91"},
    42                 {name:"王大麻子",age:"18",grade:"92"},
    43                 {name:"王二麻子",age:"17",grade:"93"}
    44               ];
    45             })
    46         
    47         
    48     </script>
    49 </html>
     
     
    2、AngularJS  服务
       
     【服务Service】

              $location:它可以返回当前页面的 URL 地址。
                   $http 服务: 服务向服务器发送请求,应用响应服务器传送过来的数据。
                   $timeout 服务: JS window.setTimeout 函数。
                   $interval 服务:  JS window.setInterval 函数


    效果图:

     1     <body ng-app="app" ng-controller="ctrl">
     2         <pre>{{local}}</pre>
     3         <p ng-bind="myHeader"></p>
     4         <p ng-bind="num"></p>
     5         <p>255转为16进制为{{gongneng}}</p>
     6         <p>{{hex}}</p>
     7         <p>{{123|filt}}</p>
     8         
     9     </body>
    10     <script src="../libs/angular.js"></script>
    11     <script>
    12         
    13         angular.module("app",[])
    14         .controller("ctrl",function($scope,$location,$timeout,$interval,$hexafy){
    15             $scope.local = $location.$$host;
    16             $timeout(function () {
    17                 $scope.myHeader = "How are you today?";
    18             }, 2000);
    19             $scope.num = 0;
    20             $interval(function(){
    21                 $scope.num ++;
    22             },1000);
    23             
    24             $scope.gongneng = $hexafy.$$gongneng;
    25             $scope.hex = $hexafy.myFunc(255);
    26             
    27         })
    28         /*自定义服务*/
    29         .service('$hexafy', function() {
    30             this.$$gongneng = "将转入的数字,转为16进制";
    31             this.myFunc = function (x) {
    32                 return x.toString(16);
    33             }
    34         })
    35         .filter("filt",function(){
    36             return function(x){
    37                 return x.toString(16);
    38             }
    39         })    
    40     </script>
    View Code


      【自定义服务factory】      

         factory 是一个函数用于返回值,通常我们使用 factory 函数来计算或返回值。(factory使用上,与service差距不大)

    效果图:

     1     <body ng-app="app" ng-controller="ctrl">
     2         <p>
     3             [功能]<br/>
     4             {{gongneng}}
     5         </p>
     6         <p>
     7             255转成16进制为:{{num}}
     8         </p>
     9     </body>
    10     <script src="../libs/angular.js"></script>
    11     <script>
    12         
    13         angular.module("app",[])
    14         .controller("ctrl",function($scope,hexafy){
    15             $scope.gongneng = hexafy.gongneng;
    16             $scope.num = hexafy.myFunc(255);
    17         })
    18         .factory('hexafy',function(){
    19             var obj = {
    20                 gongneng : "将转入的数字,转为16进制",
    21                 myFunc:function(x){
    22                     return x.toString(16);
    23                 }
    24             };
    25             return obj;
    26         })
    27         /*自定义服务*/
    28 //        .service('hexafy', function() {
    29 //            this.gongneng = "将转入的数字,转为16进制";
    30 //            this.myFunc = function (x) {
    31 //                return x.toString(16);
    32 //            }
    33 //        })
    34         
    35         
    36     </script>
    View Code

     【自定义服务provide】

               1、在AngularJS中,Service,factory都是基于provider实现的。
               2、在provider中,通过$get()方法提供了factory的写法,用于返回 value/service/factory。;
               3、provider是三种自定义服务中,唯一可以写进config配置阶段的一种。
            

    效果图:

     1     <body ng-app="app" ng-controller="ctrl">
     2         <p>
     3             [功能]<br/>
     4             {{gongneng}}
     5         </p>
     6         <p>
     7             255转成16进制为:{{num}}
     8         </p>
     9     </body>
    10     <script src="../libs/angular.js"></script>
    11     <script>
    12         
    13         angular.module("app",[])
    14         .controller("ctrl",function($scope,hexafy){
    15             $scope.gongneng = hexafy.gongneng;
    16             $scope.num = hexafy.myFunc(255);
    17         })
    18         
    19         /*定义一个provider服务*/
    20         .provider('hexafy',function(){
    21 //            this.gongneng = "将转入的数字,转为16进制";
    22             this.$get = function(){
    23                 var obj = {
    24                     gongneng : "将转入的数字,转为16进制",
    25                     myFunc : function(x){
    26                         return x.toString(16);
    27                     }
    28                 }
    29                 return obj;
    30             }
    31         })
    32         
    33 //        .factory('hexafy',function(){
    34 //            var obj = {
    35 //                gongneng : "将转入的数字,转为16进制",
    36 //                myFunc:function(x){
    37 //                    return x.toString(16);
    38 //                }
    39 //            };
    40 //            return obj;
    41 //        })
    42 
    43         /*自定义服务*/
    44 //        .service('hexafy', function() {
    45 //            this.gongneng = "将转入的数字,转为16进制";
    46 //            this.myFunc = function (x) {
    47 //                return x.toString(16);
    48 //            }
    49 //        })
    50         
    51         
    52     </script>
    View Code

    学习时候的笔记,可能会有一些错误的地方,欢迎各位的批评指点。

    反思,复盘,每天收获一点---------------------期待更好的自己

  • 相关阅读:
    题解 P3842 【[TJOI2007]线段】
    题解 CF1366A 【Shovels and Swords】
    题解 CF1391D
    题解 CF1374B 【Multiply by 2, divide by 6】
    CSP-J2020爆零记
    YbtOJ20025 放置石子
    YbtOJ20001 立方数差
    [仅供参考]W-RB的码风及要求
    [敲黑板]CSP考试策略
    [水沝淼㵘]向量水解
  • 原文地址:https://www.cnblogs.com/zhuanzhibukaixin/p/7148792.html
Copyright © 2020-2023  润新知