angularjs ui-grid如何動態設置行高


自己開發的公眾號,可以領取淘寶內部優惠券

在用ui-grid的時候我們可以用rowHeight設置行高,可是每一行的高度都是一樣的,無法根據行內的內容進行自適應。如下圖

為了解決這個問題,google了幾天時間找不到動態設置行高的方法。通過查看元素的結構發現這么點線索

 

可以發現每一個row都是通過這樣的template進行循環輸出的,這樣子就可以在這個模板上進行添加點樣式,通過ui-grid的源代碼我們找到了下面兩個模板

$templateCache.put('ui-grid/uiGridViewport',
            "<div role=\"rowgroup\" class=\"ui-grid-viewport\" ng-style=\"colContainer.getViewportStyle()\"><!-- tbody --><div class=\"ui-grid-canvas\" ><div style=\"height:{{grid.appScope.fixHeight(row)}}px\" ng-repeat=\"(rowRenderIndex, row) in rowContainer.renderedRows track by $index\" class=\"ui-grid-row\" ng-style=\"Viewport.rowStyle(rowRenderIndex)\"><div role=\"row\" ui-grid-row=\"row\" row-render-index=\"rowRenderIndex\"></div></div></div></div>" ); $templateCache.put('ui-grid/ui-grid-row', "<div ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.uid\" style=\"height:{{grid.appScope.fixHeight(row)}}px\" ui-grid-one-bind-id-grid=\"rowRenderIndex + '-' + col.uid + '-cell'\" class=\"ui-grid-cell\" ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\" role=\"{{col.isRowHeader ? 'rowheader' : 'gridcell'}}\" ui-grid-cell></div>" );

這兩個模板是ui-grid/uiGridViewport和ui-grid/ui-grid-row,為了實現效果不得不進行覆蓋原有的模板。我加了style屬性並調用當前controller的fixHeight方法,傳入當前的row參數。

在fixHeight方法里面就可以獲取row.entity屬性得到當前行的實體進行相應的邏輯處理

 最終效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM