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 相关文章推荐
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
Jan 07 Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
js中值引用和地址引用实例分析
Jun 21 Javascript
vue实现前端分页完整代码
Jun 17 Javascript
JS性能优化实现方法及优点进行
Aug 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
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
php集成开发环境详解
2019/09/24 PHP
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
Python发送email的3种方法
2015/04/28 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python计算两个数的百分比方法
2018/06/29 Python
Python安装selenium包详细过程
2019/07/23 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
汽车装潢店创业计划书范文
2014/02/05 职场文书
中学生运动会入场词
2014/02/12 职场文书
导游个人求职信范文
2014/03/23 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
跑出一片天观后感
2015/06/08 职场文书
Python中npy和mat文件的保存与读取
2022/04/24 Python