angular实现商品筛选功能


Posted in Javascript onFebruary 01, 2017

一、demo功能分析

1、通过service()创建数据并遍历渲染到页面
2、根据输入框的输入值进行字段查询
3、点击各列实现排序功能。

二、实现

1.1 数据定义与渲染

angular更偏向于是一个MVVM模式的框架,所以它的controller很薄,里面的业务逻辑也是少的,因此应该养成把逻辑写在service或者Factory等angular提供的可以自定义服务的方法中。此次demo通过angular的service方法来注册并定义商品数据。

angular.module("app",[])
.service("productData",function(){
  //通过service方法来定义数据,也可以通过factory方法来定义
  return [
    {
      id:1002,
      name:'HuaWei',
      quantity:200,
      price:4300
    },
    {
      id:2123,
      name:'iphone7',
      quantity:38,
      price:6300
    },
    {
      id:3001,
      name:'XiaoMi',
      quantity:3,
      price:2800
    },
    {
      id:4145,
      name:'Oppo',
      quantity:37,
      price:2100
    },
    {
      id:5563,
      name:'Vivo',
      quantity:23,
      price:2100
    }
  ]
})
//传入用service定义的productData数据依赖
.controller("myCtrl",function($scope,productData){
  $scope.data=productData; //进行相应赋值

  $scope.order=''; //单列排序用,后面详解
  $scope.changeOrder=function(type){
    $scope.orderType=type;
    if($scope.order===''){
      $scope.order='-';
    }else{
      $scope.order='';
    }
  }
})

数据渲染部分:

<table class="table">
      <thead>
      <tr>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('id')">产品编号<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('name')">产品各称<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('price')">产品价钱<span class="caret"></span></th>
      </tr>
      </thead>
      <tbody>
      <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
        <td>{{value.id}}</td>
        <td>{{value.name}}</td>
        <td>{{value.price}}</td>
      </tr>
      </tbody>

    </table>

说明:上面利用了bootstrap的caret类名来显示出三角符号,并通过给父元素加dropup使三角符号转向。
1、三角符号的转向与否由ng-class指令确定,传入表达式,当order===‘ '时,为true,则给th加上dropup类名
2、用ng-click指令绑定点击事件,实现点击就切换排序方式

2.2 搜索功能

采用angular的filter过滤器,搜索输入字段

<!--输入框采用ng-model绑定一个值-->
 搜索:<input type="text" ng-model="search">
 <!--通过filter:{id:search}实现以id为搜索内容,以search的值为搜索基准-->
 <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
        <td>{{value.id}}</td>
        <td>{{value.name}}</td>
        <td>{{value.price}}</td>
      </tr>

2.3 排序功能

1、定义order属性用于设置正序还是反序
2、定义orderType属性用于设置参考排序的值
3、定义changeOrder()方法用于实现点击就切换排序的功能

$scope.order=''; //当order为‘'时正序
 $scope.changeOrder=function(type){ //传入属性名,以此为基准排序
   $scope.orderType=type;
   if($scope.order===''){
     $scope.order='-'; //order为'-'时,反序
   }else{
     $scope.order='';
   }
 }

页面中:changeOrder()函数传入“类型”作为参数,并在函数内部通过\ $scope.orderType=type;设定排序的参考类型

<table class="table">
      <thead>
      <tr>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('id')">产品编号<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('name')">产品各称<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('price')">产品价钱<span class="caret"></span></th>
      </tr>
      </thead>
      <tbody>
        <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
          <td>{{value.id}}</td>
          <td>{{value.name}}</td>
          <td>{{value.price}}</td>
        </tr>
      </tbody>
    </table>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
dojo 之基础篇(三)之向服务器发送数据
Mar 24 Javascript
转一个日期输入控件,支持FF
Apr 27 Javascript
用JSON做数据传输格式中的一些问题总结
Dec 21 Javascript
减少访问DOM的次数提升javascript性能
Feb 24 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
在vue中通过axios异步使用echarts的方法
Jan 13 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
Bootstarp基本模版学习教程
Feb 01 #Javascript
angular实现表单验证及提交功能
Feb 01 #Javascript
Javascript基础回顾之(三) js面向对象
Jan 31 #Javascript
Javascript基础回顾之(二) js作用域
Jan 31 #Javascript
Javascript基础回顾之(一) 类型
Jan 31 #Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 #Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 #Javascript
You might like
php中将网址转换为超链接的函数
2011/09/02 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
利用php生成验证码
2017/02/23 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
类之Prototype.js学习
2007/06/13 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
学期自我鉴定
2013/11/04 职场文书
自荐信需注意事项
2014/01/25 职场文书
酒店个人求职信范文
2014/01/25 职场文书
《手指教学》反思
2014/02/14 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
简单租房协议书
2014/04/09 职场文书
自我推荐信范文
2014/05/09 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
委托收款证明
2015/06/23 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python