【MVVM】- AngularJS 过滤器用法

一世执手 提交于 2020-03-01 10:01:32

过滤器作用:对model的数据进行加工,按照相应的格式进行显示

AngularJS的过滤器和Avalon的用法差不多,一通百通。

  • currency 格式化数字为货币格式
  • filter 从数组项中选择一个子集
  • lowercase 格式化字符串为小写
  • orderBy 根据某个表达式排列数组
  • uppercase 格式化字符串为大写

外观界面

<body ng-app="myApp">

<p>字符串大小过滤</p>
<div ng-controller="personCtrl">
名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>

<!-- 表达式过滤和avalon的过滤方法一样 -->
小写姓: {{firstName | lowercase }}<br>
大写名:{{lastName | uppercase }}
</div>

<hr>
<p>数字货币化处理</p>
<div ng-init="quantity=3;cost=5">
总价:{{quantity*cost | currency}}
</div>

<hr>
<p>普通数组排序</p>
<div ng-init="nums=[0,5,6,3]">
<ol>

<!-- angular引擎先对数组元素进行升序排列,然后再遍历显示,也可以对对象数组的属性进行排序 -->
<li ng-repeat="item in nums | orderBy:item">{{item}}</li>
</ol>
</div>

<hr>
<p>对象数组排序</p>
<div ng-init="persons=[{'name':'zhangsan','age':'20'},
                     {'name':'lisi','age':'19'},
                     {'name':'wangwu','age':'39'}]">

<ol>
<!-- 年龄从小到大进行排序显示 -->
<li ng-repeat="item in persons | orderBy:'age'">{{item}}</li>
</ol>
</div>

<hr>
<p>输入过滤:</p>
<p><input type="text" ng-model="test"></p>
<ul>
  <!-- fileter:test--将输入框的值绑定test对象,test作为persons数组的进行数值匹配,如果匹配上就显示响应的成员 -->
  <li ng-repeat="x in persons | filter:test | orderBy:'age'">
    {{ (x.name | uppercase) + ', ' + x.age }}
  </li>
</ul>
</div>

js操作逻辑

var app = angular.module('myApp', []);
    app.controller('personCtrl', function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
    $scope.fullName = function() {  
        return $scope.firstName + " " + $scope.lastName;
    }
});

效果:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!