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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
jquery.post用法示例代码
Jan 03 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
Sep 14 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
用最少的JS代码写出贪吃蛇游戏
Jan 12 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
Jun 25 Javascript
Vue-component全局注册实例
Sep 06 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 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使用ICQ网关发送手机短信
2013/10/30 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
php读取本地json文件的实例
2018/03/07 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
JavaScript中5种调用函数的方法
2015/03/12 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
python获取本机外网ip的方法
2015/04/15 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
python代码实现图书管理系统
2020/11/30 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
业务经理岗位职责
2013/11/11 职场文书
会计工作能力自我评价
2015/03/05 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL