AngularJS 过滤与排序详解及实例代码


Posted in Javascript onSeptember 14, 2016

前面了解了AngularJS的使用方法,这里就简单的写个小程序,实现查询过滤以及排序的功能。

本程序中可以了解到:

1 angularjs的过滤器

2 ng-repeat的使用方法

3 控制器的使用

4 数据的绑定

程序设计分析

首先,如果要是先查询过滤,就要使用到AngularJS中的 过滤器filter 了。

直接在表达式的后面使用管道命令符 | ,按照下面的写法就可以达到一个过滤的效果:

{{ persons | filter:query }}

通过使用filter实现过滤操作,query是查询过滤时输入的字符串。

类似地,使用orderBy就可以实现排序的功能:

{{ persons | filter:query | orderBy:order }}

上面的查询以及排序涉及到两个变量,query和order。在这里直接使用ng-model实现数据的绑定即可:

Search:<input ng-model="query">
      Sort by:<select ng-model="order">
        <option value="name">name</option>
        <option value="age">age</option>
      </select>

AngularJS是一门基于DOM的框架语言,因此不需要实现任何的监听器以及事件触发器,当query所在的输入框发生任何改变时,就会触发输入框与下面的表达式展现的双向刷新!

相比于其他的一些框架,是基于字符串通过DOM节点innerHTML添加到DOM中,AngularJS的实现方式加快了模型与视图的展现。并且减少了大量不必要的监听器啊触发器啊之类的代码的编写,真正实现了类似spring的效果~

数据的展现,可以通过ng-repeat实现。当网页解析到ng-repeat的时候,会为每一个数组中的元素都克隆一份标签,进行编译解析。

 

 <ul class="persons">
        <li ng-repeat="person in persons | filter:query | orderBy:order">
          {{person.name}}
          
          {{person.age}}
        </li>
      </ul>

剩下的工作就是需要在script中进行perons数组的初始化:   

<div ng-controller="ctl">
          ...
    </div>
    <script type="text/javascript">
      function ctl($scope){
        $scope.persons = [
          {"name":"xingoo","age":25},
          {"name":"zhangsan","age":18},
          {"name":"lisi","age":20},
          {"name":"wangwu","age":30}
        ];
        $scope.order = "age";
      }
    </script>

  代码以及结果

最后贴上全部的代码:

<!doctype html>
<html ng-app>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>

  </head>
  <body>
    <div ng-controller="ctl">
      Search:<input ng-model="query">
      Sort by:<select ng-model="order">
        <option value="name">name</option>
        <option value="age">age</option>
      </select>

      <ul class="persons">
        <li ng-repeat="person in persons | filter:query | orderBy:order">
          {{person.name}}
          
          {{person.age}}
        </li>
      </ul>
    </div>
    <script type="text/javascript">
      function ctl($scope){
        $scope.persons = [
          {"name":"xingoo","age":25},
          {"name":"zhangsan","age":18},
          {"name":"lisi","age":20},
          {"name":"wangwu","age":30}
        ];
        $scope.order = "age";
      }
    </script>
  </body>
</html>

使用结果:

在默认情况下,使用age进行排序:

AngularJS 过滤与排序详解及实例代码

通过选择则可以使用name排序

AngularJS 过滤与排序详解及实例代码

再输入字符的时候,会自动过查询过滤掉一些选项

AngularJS 过滤与排序详解及实例代码

以上就是对AngularJS 过滤与排序的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
jQuery获取css z-index在各种浏览器中的返回值
Sep 15 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
jQuery动画与特效详解
Feb 01 Javascript
jQuery插件实现大图全屏图片相册
Mar 14 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
JavaScript简单下拉菜单特效
Sep 13 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
详解datagrid使用方法(重要)
Nov 06 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 #Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 #Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 #Javascript
AngularJS equal比较对象实例详解
Sep 14 #Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 #Javascript
AngularJS $injector 依赖注入详解
Sep 14 #Javascript
You might like
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
Javascript 继承机制实例
2009/08/12 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python读写压缩文件的方法
2020/07/30 Python
python中selenium库的基本使用详解
2020/07/31 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
应聘美工求职信
2013/11/07 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2014企业年终工作总结
2014/12/23 职场文书
餐馆开业致辞
2015/08/01 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python