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 相关文章推荐
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
jQuery scroll事件实现监控滚动条分页示例
Apr 04 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
a标签置灰不可点击的实现方法
Feb 06 Javascript
使用jQuery操作DOM的方法小结
Feb 27 Javascript
vue--点击当前增加class,其他删除class的方法
Sep 15 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
php的一些小问题
2010/07/03 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
jQuery阻止同类型事件小结
2013/04/19 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
python获取linux系统信息的三种方法
2020/10/14 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
医学检验专业自荐信
2014/09/18 职场文书
教师节感谢信
2015/01/22 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL