Ich versuche, eine Richtlinie zu machen, dass ich eine virtuelle Scroll tun kann, so wie es der Benutzer scrollt die Tabelle, die Tabelle „alte“ Ansichten entfernen und „neue“ Ansichten, Art wie die Sammlung wiederholen hinzufügen, aber ich war versagt, ich denke ich habe die Mathematik dahinter nicht verstanden, kann mir jemand helfen?Wie kann ich einen virtuellen Scroll mit angularJS erstellen?
dies ist meine Richtlinie Code:
BaseModule.directive('myScroll', function() {
return {
restrict:"A",
scope:{
rows:"=",
headers:"="
},
link: function(scope,el) {
var scrollTop = 0;
var scrollLeft = 0;
angular.element(el).on('scroll',function(){
scrollTop = $(el).scrollTop();
scrollLeft = $(el).scrollLeft();
$(el).parent().find(".header").scrollLeft(scrollLeft);
var height = $(el).height();
var numberOfRows = height/23;
var initialRow = scrollTop/23;
var html = "";
for(i=0; i<numberOfRows;i++){
var row = scope.rows[i+initialRow];
html = html + addRow(row,i+initialRow);
}
$(el).find('.tbody-scroll').append(html);
});
scope.$watch('rows',function(rows){
var height = $(el).height();
var numberOfRows = height/23;
var initialRow = scrollTop/23;
var html = "";
for(i=0; i<numberOfRows;i++){
var row = rows[i+initialRow];
html = html + addRow(row,i+initialRow);
}
$(el).find('.tbody-scroll').append(html);
});
var addRow = function(row,index){
var html = "";
var pos = 0;
var totalWidth = 0;
angular.forEach(row,function(col){
var width = scope.headers[pos].width;
totalWidth = totalWidth + width;
html = html + "<span style='width:"+width+"px'>"+col.value+"</span>";
pos++;
});
html = "<div class='row' style='top:"+index*23+"px;width:"+totalWidth+"px;'>"+html;
html = html + "</div>";
return html;
};
}
};
});
<!-- my directive .html -->
<div class="mTable">
<div class="header" ng-style="headerWidth(headers())">
<span ng-repeat="header in headers()" ng-style="widthStyle(header)">
{{::header.label}}
</span>
</div>
<div class="tbody-container" my-scroll headers="headers()" rows="rows()">
<div class="tbody-scroll" ng-style="scrollHeight(rows(),headers())"></div>
</div>
</div>
ich diese Richtlinie eigentlich schon zuvor gesehen, und hatte keine Erfolg, aber plötzlich wurde mir klar, es ist nicht nur wegen der CSS von divs und jetzt gearbeitet habe habe ich es werde, so werde ich Ihnen –
akzeptieren froh, dass ich Hilfe gewesen, irgendwie – valepu
Sie haben tatsächlich, diese Anweisung wieder zu sehen hat mich denke "versuch es mal wieder " so danke!!! –