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进行拖拽
Jul 20 Javascript
动态为事件添加js代码示例
Feb 15 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
详解原生js实现offset方法
Jun 15 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 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
多重?l件?合查?(二)
2006/10/09 PHP
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
小程序实现搜索框
2020/06/19 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
浅谈Python爬虫基本套路
2019/03/25 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
社会实践评语
2014/04/28 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle