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 相关文章推荐
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
JavaScript中双叹号!!作用示例介绍
Sep 21 Javascript
提升PHP安全:8个必须修改的PHP默认配置
Nov 17 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
JS触摸事件、手势事件详解
May 04 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
Vue实现根据hash高亮选项卡
May 27 Javascript
快速解决element的autofocus失效问题
Sep 08 Javascript
Echarts.js无法引入问题解决方案
Oct 30 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
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
Python中unittest用法实例
2014/09/25 Python
Python解析最简单的验证码
2016/01/07 Python
快速了解Python中的装饰器
2018/01/11 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
Python实现微信表情包炸群功能
2021/01/28 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
采购员的工作职责
2013/12/26 职场文书
外贸业务员工作职责
2014/01/06 职场文书
魅力教师事迹材料
2014/01/10 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
中秋晚会活动方案
2014/08/31 职场文书
学雷锋倡议书
2015/01/19 职场文书
2019公司管理制度
2019/04/19 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript