简述angular 中constant和$filter的用法

简述angular 中constant和$filter的用法 

1.背景介绍

        什么是中constant和$filter,constant是用来设置常量的,constant(name,value)可以将一个已经存在的变量值注册为服务,通过依赖注入将其注入到应用的其他部分中,constant(name,value)可以将一个已经存在的变量值注册为服务,并将其注入到应用的其他部分中。其中,name为注册的常量的名字,value为注册的常量的值或对象。$filter是AngularJs 服务,$filter是过滤器,用来格式化数据用的。

2.知识剖析


2.1constant剖析

     1,通过var 直接定义global variable,和纯js是一样的。

      2,用angularjs value来设置全局变量 。

     3,用angularjs constant来设置全局变量 。

     本次看一下用angularjs constant来设置全局变量 。


2.2$filter剖析              

       $filter 过滤器,是angularJs中用来处理数据以更好的方式展示给我用户。比如格式化日期,转换大小写等等。 * 过滤器即有内置过滤器也支持自定义过滤器。内置过滤器很多,可以百度。关键是如何使用,本次讲解$filter

3.常见问题

   filter应用
   怎么自定义$filter

4.解决方案

  自定义过滤器:{{带过滤数据 | 过滤器名:参数1:参数2:参数3.....}}

                    app.filter('过滤器名', function () {

                            return function (待过滤数据, 参数....) {

                                          ......

                                return  已过滤数据;

                     }

 5.编码实战

  

< div class= "page-wrapper ">
< ui-view></ ui-view>
<!-- 1111111 -->
< h1 style= "color: red ">
{{A.b}} < br>
</ h1>
< br>
< br> 自定义函数:
< h1 style= "color: rgb(61, 8, 8) " ng-repeat= " x in Arr2 | reverse ">< span>{{x}}</ span> </ h1>
< br/>
< br/>
<!-- 22222222 -->
< div style= "color: rgb(255, 0, 170);font-size: 30px ">
{{ 12.45 | currency:'¥':1 }}
< br> {{ 1432075948123 | date:"MM/dd/yyyy @ h:mma "}}
</ div>
< br/>
< br/>
< p style= "color: rgb(0, 0, 0);font-size: 20px "> 用法1(参数expression使用String)
</ p>
<!-- 用法1(参数expression使用String): -->
< div style= "color: blue;font-size: 30px " ng-repeat= "x in Arr0 |filter : 'a'">
< span>Name: {{x.name}}</ span>
< span>Age: {{x.age}}</ span>
</ div>
< br/>
< br/>
< p style= "color: rgb(0, 0, 0);font-size: 20px "> 用法2(参数expression使用function)
</ p>
<!-- 用法2(参数expression使用function): -->
< div style= "color: rgb(9, 255, 9);font-size: 30px " ng-repeat= "x in Arr0 |filter: myFilter ">
< span>Name:{{x.name}}</ span>
< span>Age:{{x.age}}</ span>
</ div>

< br/>
< br/>
< p style= "color: rgb(0, 0, 0);font-size: 20px "> 用法3 参数expression使用object)
</ p>
<!-- 用法3 参数expression使用object): -->
< div style= "color: rgb(9, 255, 9);font-size: 30px " ng-repeat= "u in Arr | filter:{age:18}">
< span>"老婆 ":{{u.name}}</ span>
< span>"年龄 ":{{u.age}}</ span>
</ div>


< br/>
< br/>
< p style= "color: rgb(0, 0, 0);font-size: 20px ">用法4(指定comparator为true或false): 指定comparator为false或者undefined,即为默认值可不传,将以大小写不敏感的方式匹配任意内容 true即大小写及内容均需完全匹配
</ p>

输入:
< input ng-model= "yourName" style= "background-color: rgb(255, 196, 0);font-size: 30px ">
< div style= "color: rgb(255, 196, 0);font-size: 30px " ng-repeat= "x in Arr0 | filter:{name:yourName}:false ">
< span>Name :{{x.name}}</ span>
< span>Age :{{x.age}}</ span>
</ div>
< br>
< br>

<!--先在Controller中定义function:myComparator, 此function将能匹配大小写不敏感的内容,但与comparator为false的情况不同的是,comparator必须匹配全文
-->
< p style= "color: rgb(0, 0, 0);font-size: 20px "> 先在Controller中定义function:myComparator, 此function将能匹配大小写不敏感的内容,但与comparator为false的情况不同的是,comparator必须匹配全文</ p>

< div>
输入:
< input style= "background-color: rgb(0, 217, 255);font-size: 30px " ng-model= "youName" />
< div style= "color: rgb(255, 196, 0);font-size: 30px " ng-repeat= "u in Arr0 | filter:{name:youName}:myComparator ">
< span>Name:{{u.name}}</ span>
< span>Age:{{u.age}}</ span>
</ div>
</ div>

< br/>
< br/>
< p style= "color: rgb(0, 0, 0);font-size: 20px "> limitToFilter(limitTo),用法(选取前N个记录)
</ p>
<!-- limitToFilter(limitTo),用法(选取前N个记录): -->
< div style= "color: rgb(9, 255, 9);font-size: 30px " ng-repeat= "u in Arr | limitTo:2 ">
< span>"老婆 ":{{u.name}}</ span>
< span>"年龄 ":{{u.age}}</ span>
</ div>

< br>
< br>
< div class= "divAll ">
< input style= "background-color: rgb(238, 255, 0);font-size: 30px " type= "text " placeholder= "输入你要搜索的内容 " ng-model= "key ">
< br>
< br>
< table cellspacing= "0 ">
< thead>
< tr>
< th>老婆</ th>
< th>年龄
< input type= "button" ng-show= "isAsc" value= "▼" ng-click= "sort()">
< input type= "button" ng-show= "!isAsc" value= "▲" ng-click= "sort()">
</ th>
< th>时间</ th>
< th>姓名</ th>
</ tr>
</ thead>
< tbody>
< tr ng-repeat= "g in goods | filter :key | orderBy : 'age' : isAsc">
< td>{{g.number}}</ td>
< td>{{g.age}}</ td>
< td>{{g.inTime | date:'yyyy-MM-dd'}}</ td>
<!--将秒数改成日期格式 年-月-日-->
< td>{{g.name}}</ td>
</ tr>
</ tbody>
</ table>
</ div>
</ div>


angular. module( "myApp")
. filter( 'reverse', function() { //可以注入依赖
return function( array) {
var newArray =[]
angular. forEach(array, function( i){
if(i > 2){
newArray. push(i * 2)
}
})
return newArray;
}
})
. controller( "listController", function ( $scope, $state, A) {
$scope.A = A; //方法,赋值
// $scope.msg = "";


$scope.Arr0 = [
{name: 'Tom', age: 20},
{name: 'Tom Senior', age: 50},
{name: 'May', age: 21},
{name: 'Jack', age: 20},
{name: 'Nancy', age: 25}
]
$scope.Arr = [
{name: '新垣结衣', age: 18},
{name: '石原里美', age: 23},
{name: '桥本环奈', age: 21},
{name: '桥本爱', age: 22},
{name: '长泽雅美', age: 22}
]

$scope.Arr2 = [
1, 2, 3, 4, 5
]

myApp. filter( 'myFilter', function () {
return x.age === 20;
});


$scope. myComparator = function ( expected, actual) {
return angular. equals(expected. toLowerCase(), actual. toLowerCase());
}

$scope.goods = [
{number: "apple",age: 18,inTime: 1488785356895,name: "新垣结衣"},
{number: "blue",age: 23,inTime: 1488685355895,name: "石原里美"},
{number: "cat",age: 25,inTime: 1468785355895,name: "桥本爱"},
{number: "neko",age: 22,inTime: 1482785355895,name: "桥本环奈"}
]
;






6.扩展思考

    constant和value区别: 
        1.value不可以在config里注入,但是constant可以 2.value可以修改,但是constant不可以修改,一般直接用constant配置一些需要经常使用的数据。


7.参考文献

              AngularJS constant和value区别详解

              AngularJS的Filter用法详解

8.更多讨论

1,问:还有哪些过滤器

答:currency 格式化数字为货币格式。

filter 从数组项中选择一个子集。

lowercase 格式化字符串为小写。

orderBy 根据某个表达式排列数组。

uppercase 格式化字符串为大写。,

2,问:可以使用多个过滤器吗

答:可以比如这样

< tr ng-repeat= "g in goods | filter :key | orderBy : 'age' : isAsc">
3,问:orderBy 是干嘛的

答:AngularJS中orderBy进行排序,第一个参数可以有三种类型,分别为:function,string,array:

第一种:function,如果是function,那么function函数会遍历待排序的数组,并将返回的结果作为angular库函数中comparator的参数,进行比较排序。

第二:如果是字符串,假如待排序的数组为对象,那么将会按照待排序数组中的每个对象的对应属性值,进行排序。如果字符串前边加有“+”,“-”符号,那么+表示升序排序,-表示降序排序。如果字符串为空,那么将按照元素自身进行排序。

第三种:如果是array,那么是第二种情况的一种多属性排序方式 。比如参数为[a,b],那么将先按照a属性值进行排序,如果a属性值相同,那么将按照b属性值进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值