पर अपने ब्लॉग पोस्ट को देख सकता मैं कुमार के सुझाव का इस्तेमाल किया और बनाया दो टेबल। एक में थैड होता है, और दूसरे में थैड और टोड दोनों होते हैं।
<div ng-style="{'margin-right': scrollBarWidth}">
<table>
<thead>
<tr>
<th width="{{tableSizes[0].width}}">Col0</th>
<th width="{{tableSizes[1].width}}">Col1</th>
<th width="{{tableSizes[2].width}}">Col2</th>
</tr>
</thead>
</table>
</div>
<div class="fixedHeadBody">
<table ng-style="{'margin-top': -rowSize.height}">
<thead>
<tr el-size="rowSize">
<th el-size="{{tableSizes[0].width}}">Col0</th>
<th el-size="{{tableSizes[1].width}}">Col1</th>
<th el-size="{{tableSizes[2].width}}">Col2</th>
</tr>
</thead>
<tbody>
<!-- data goes here -->
</tbody>
</table>
</div>
दूसरे के आधार पर, मैंने एक निर्देश जोड़ा (नीचे देखें) जो प्रत्येक कॉलम की चौड़ाई और ऊंचाई को देखता है। इन कॉलम का आउटपुट पहले थैड (कोणीय बाध्यकारी) की चौड़ाई निर्धारित करने के लिए उपयोग किया जाता है। मैंने दूसरी तालिका के थैड टी को भी वही निर्देश जोड़ा, और दूसरी तालिका के स्क्रोल करने योग्य थैड को छिपाने के लिए ऊंचाई मान का उपयोग किया। इस तरह, मैं केवल पहले थैड को दिखाता हूं जो तय है।
स्क्रॉलबार को हल करने के लिए मुझे एक और चीज़ थी। स्क्रॉल बार स्थान लेता है और जो कॉलम को पहले और दूसरी तालिका के बीच गलत तरीके से गलत करता है। इसे ठीक करने के लिए, मैंने शीर्ष तालिका के मार्जिन-दाएं को जोड़ा जो स्क्रॉल बार की चौड़ाई के बराबर है (तालिका और तालिका वाले div के बीच चौड़ाई अंतर)। स्क्रॉलबार चौड़ाई ब्राउज़र के बीच बदलती है और अंतिम फ़ंक्शन किसी भी ब्राउज़र के लिए काम करता है।
app.directive('elSize', ['$parse', '$timeout', function ($parse, $timeout) {
return function(scope, elem, attrs) {
var fn = $parse(attrs.elSize);
scope.$watch(function() {
return { width: elem.innerWidth(), height: elem.innerHeight() };
},
function (size) {
fn.assign(scope, size);
}, true);
}
}])
नियंत्रक के भीतर, आप नीचे दिए गए फ़ंक्शन का उपयोग करके scrollBarWidth सेट कर सकते हैं। एक बार टेबल प्रस्तुत किए जाने के बाद आप $ scope.setScrollBarWidth() को कॉल कर सकते हैं।
$scope.scrollBarWidth = "5px";
$scope.setScrollBarWidth = function() {
$timeout(function() {
var divWidth = $(".fixedHeadBody").width();
var tableWidth = $(".fixedHeadBody table").width();
var diff = divWidth - tableWidth;
if (diff > 0) $scope.scrollBarWidth = diff + "px";
}, 300);
}
स्रोत
2015-03-06 22:14:17
मैं डॉन समझ में नहीं आता, आप टेबल हेडर तय करना चाहते हैं लेकिन उत्तरदायी भी चाहते हैं। वो कैसे संभव है? – Stewie
@Stewie कृपया इसे देखें: http://www.fixedheadertable.com/ –
@ स्टीवी आप एनजी-ग्रिड का उदाहरण भी ले सकते हैं। यदि आप हेडर तय करते हैं, तो यह उत्तरदायी रहता है। –