Agularjs妙用双向数据绑定实现手风琴效果


Posted in Javascript onMay 26, 2017

最近在工作总遇到需要实现类似手风琴效果的需求,如下图所示:

Agularjs妙用双向数据绑定实现手风琴效果 

因为汇总(上半部分)和明细(下面的浅色部分)在不同的情况下显示的字段数量是不一样的,而且还有编辑和展示的状态切换,所以需要自己实现手风琴效果。

初步的想法是用css的transform做动效,点击详情按钮(或中间部分的下拉图标)时请求详情数据,然后将详情部分的height设置成指定高度,再次点击详情按钮(或中间部分的下拉图标),详情部分被收起。

但是这样的问题在于我们如何精确的控制到底该显示哪一行汇总数据的明细和关闭其他行的明细,经过一番思考我决定利用一下双向数据绑定来帮我完成这个事情。具体代码如下:

js:

$scope.toogleShowDtl = function (item, e) {
       //阻止事件冒泡
       e.stopPropagation();
      for (var i = 0; i < $scope.OrderHdr.length; i++) {
        if ($scope.OrderHdr[i].Bill_Hdr_Id != item.Bill_Hdr_Id) {
          $scope.OrderHdr[i].mxShow = false;
          $scope.OrderHdr[i].iconChange = "glyphicon glyphicon-menu-down";
        }
      }
      switch (item.mxShow) {
        case undefined:
          item.mxShow = true;
          item.iconChange = "glyphicon glyphicon-menu-up";
          break;
        case true:
          item.mxShow = false;
          item.iconChange = "glyphicon glyphicon-menu-down";
          break;
        case false:
          item.mxShow = true;
          item.iconChange = "glyphicon glyphicon-menu-up";
          break;
        default:
          item.mxShow = false;
          item.iconChange = "glyphicon glyphicon-menu-down";
          break;
      }
    }

html:

<div class="col-sm-12 detial_box" ng-click="selectHdr($index)" ng-class="{ dtl_select : $index == selectedIndex }">
  <div class="col-sm-3" style="margin-top:60px; ">
   <button class="btn btn-primary" ng-click="toogleShowDtl(o,$event)">详情</button>
  </div>
  <div class="down_img">
    <span class="{{o.iconChange}} glyphicon glyphicon-menu-down" ng-click="toogleShowDtl(o,$event)"></span>
  </div>
</div>
<div class="col-sm-12 mx_box check-element animate-show-hide" ng-show="o.mxShow">
  <!--明细内容-->
</div>

当点击事件触发的时候,当前行数据中并没有mxShow这个字段,故循环为其添加上该字段并赋值为false,当前被点击的行不能执行这个操作,否则第一次点击的时候改行的明细是不会展示的。后面的switch case语句保证了第一次点击mxShow没有值 以及mxShow值切换的问题。item.iconChange 的值是用来控制中间字体图标的切换,当明细没展示的时候图标是向下的,代表可以展开,当明细显示的时候图标向上,代表可以收起。

ng-show="o.mxShow" 根据mxShow的值来确定明细是否展示。

class="{{o.iconChange}} glyphicon glyphicon-menu-down"

用来切换图标

最终效果图如下(不知道怎么上传动图o(?□?)o)

Agularjs妙用双向数据绑定实现手风琴效果

以上所述是小编给大家介绍的Agularjs妙用双向数据绑定实现手风琴效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
js中回调函数的学习笔记
Jul 31 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
使用selenium抓取淘宝的商品信息实例
Feb 06 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
vue 指令之气泡提示效果的实现代码
Oct 18 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
JavaScript随机数的组合问题案例分析
May 16 Javascript
js+canvas实现五子棋小游戏
Aug 02 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 #Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 #Javascript
jQuery导航条固定定位效果实例代码
May 26 #jQuery
mongoose中利用populate处理嵌套的方法
May 26 #Javascript
Angularjs修改密码的实例代码
May 26 #Javascript
详解vue.js的devtools安装
May 26 #Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
May 26 #Javascript
You might like
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
PHP7 list() 函数修改
2021/03/09 PHP
jQuery 1.0.2
2006/10/11 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python 自动化表单提交实例代码
2017/06/08 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
企业办公室主任岗位职责
2014/02/19 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
2014年新教师工作总结
2014/11/08 职场文书
刘公岛导游词
2015/02/05 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书