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 事件属性绑定带参数的函数
Mar 13 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
Sep 27 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
IE11下处理Promise及Vue的单项数据流问题
Jul 24 Javascript
Vue数据绑定实例写法
Aug 06 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
vue修改Element的el-table样式的4种方法
Sep 17 Javascript
js不常见操作运算符总结
Nov 20 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php自定义分页类完整实例
2015/12/25 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP简单遍历对象示例
2016/09/28 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
JS实现环形进度条(从0到100%)效果
2016/07/05 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
es6数值的扩展方法
2019/03/11 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
Python基础练习之用户登录实现代码分享
2017/11/08 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python实现微信打飞机游戏
2020/03/24 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
外语系大学生自荐信范文
2014/03/01 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书