国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Agularjs妙用雙向數(shù)據(jù)綁定實現(xiàn)手風(fēng)琴效果

2019-11-19 16:28:38
字體:
供稿:網(wǎng)友

最近在工作總遇到需要實現(xiàn)類似手風(fēng)琴效果的需求,如下圖所示:

這里寫圖片描述 

因為匯總(上半部分)和明細(xì)(下面的淺色部分)在不同的情況下顯示的字段數(shù)量是不一樣的,而且還有編輯和展示的狀態(tài)切換,所以需要自己實現(xiàn)手風(fēng)琴效果。

初步的想法是用css的transform做動效,點(diǎn)擊詳情按鈕(或中間部分的下拉圖標(biāo))時請求詳情數(shù)據(jù),然后將詳情部分的height設(shè)置成指定高度,再次點(diǎn)擊詳情按鈕(或中間部分的下拉圖標(biāo)),詳情部分被收起。

但是這樣的問題在于我們?nèi)绾尉_的控制到底該顯示哪一行匯總數(shù)據(jù)的明細(xì)和關(guān)閉其他行的明細(xì),經(jīng)過一番思考我決定利用一下雙向數(shù)據(jù)綁定來幫我完成這個事情。具體代碼如下:

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">  <!--明細(xì)內(nèi)容--></div>

當(dāng)點(diǎn)擊事件觸發(fā)的時候,當(dāng)前行數(shù)據(jù)中并沒有mxShow這個字段,故循環(huán)為其添加上該字段并賦值為false,當(dāng)前被點(diǎn)擊的行不能執(zhí)行這個操作,否則第一次點(diǎn)擊的時候改行的明細(xì)是不會展示的。后面的switch case語句保證了第一次點(diǎn)擊mxShow沒有值 以及mxShow值切換的問題。item.iconChange 的值是用來控制中間字體圖標(biāo)的切換,當(dāng)明細(xì)沒展示的時候圖標(biāo)是向下的,代表可以展開,當(dāng)明細(xì)顯示的時候圖標(biāo)向上,代表可以收起。

ng-show="o.mxShow" 根據(jù)mxShow的值來確定明細(xì)是否展示。

class="{{o.iconChange}} glyphicon glyphicon-menu-down"

用來切換圖標(biāo)

最終效果圖如下(不知道怎么上傳動圖o(

主站蜘蛛池模板: 临沭县| 亚东县| 伊川县| 都昌县| 永寿县| 钟山县| 拉孜县| 色达县| 正安县| 佛学| 嵩明县| 鄂托克前旗| 鲁甸县| 司法| 华池县| 天等县| 湘阴县| 大邑县| 惠安县| 江华| 庄浪县| 淅川县| 铜梁县| 大名县| 福贡县| 龙井市| 叶城县| 正安县| 宣城市| 大港区| 射阳县| 博罗县| 延川县| 萨嘎县| 绿春县| 通道| 汕头市| 梅州市| 富锦市| 兴义市| 齐齐哈尔市|