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 相关文章推荐
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 Javascript
uploadify 3.0 详细使用说明
Jun 18 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
May 27 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
ES6 如何改变JS内置行为的代理与反射
Feb 11 Javascript
JavaScript设计模式之策略模式实现原理详解
May 29 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP学习之整理字符串
2011/04/17 PHP
php动态绑定变量的用法
2015/06/16 PHP
php中的登陆login实例代码
2016/06/20 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
python实现定制交互式命令行的方法
2014/07/03 Python
python内存管理分析
2015/04/08 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python数据封装json格式数据
2018/03/04 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
初中英语演讲稿
2014/04/29 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
办公室文员岗位职责
2015/02/04 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
MySQL插入数据与查询数据
2022/03/25 MySQL