Bir ng-yinelemeyi güncelledikten sonra nasıl geri arama yaptığımı anlamakta biraz sorun yaşıyorum. Temelde ng-tikamamdaki güncellemelerim bittikten sonra geri arama fonksiyonu yapabiliyorum.AngularJS - ng-yineleme güncellemesinden sonra geri arama
var app = angular.module('myApp', []);
app.directive('onLastRepeat', function() {
return function(scope, element, attrs) {
if (scope.$first)
console.log("ng-repeat starting - Index: " + scope.$index)
if (scope.$last) setTimeout(function(){
console.log("ng-rpeat finished - Index: " + scope.$index);
}, 1);
};
});
app.controller('MyController', function($scope) {
$scope.data = [1,2,3,4,5,6,7,8,9,10,12,12,13,14,15,16,17,18,19,20];
$scope.buttonClicked = function() {
console.log('Btn clicked');
$scope.randomItems = getRandomItems(this.data.length);
};
});
HTML
<div ng-app="myApp">
<div ng-controller="MyController">
<button ng-click="buttonClicked()">Highlight random</button>
<ul class="item" >
<li ng-repeat="item in data" ng-class="{highlight: randomItems.indexOf($index) > -1}" on-last-repeat>{{ item }} </li>
</ul>
</div>
</div>
Bağlantı keman: Şu anda bu var
https://jsfiddle.net/hbhodgm3/ Peki "app" çalışır tıkladığınızda o zaman veri dizinin içeriğini listeler olmasıdır "Vurgula" butonu listede 2'yi rastgele vurguluyor. Yani benim sorunum, vurgulama/DOM-render yapıldığında bir geri çağırma fonksiyonuna sahip olmak istiyorum. Ng-yinelemenin ne zaman yapıldığını kontrol etmek için $ scope.first ve $ scope.last ile başlangıç ng-yinelemesi için bunu yapmanın bir yolunu buldum, ancak vurgulama ile çalışmaz gibi görünmüyor.
Umut ben önceden
Teşekkür sorunu açıklamak başardı.
döngünün son render değil, yeni sindirmek döngüsü güncelleme:
getRandomItems(this.data.length);
varsayarsaksaniye gerçekleştirmek için sürebilir bir API çağrıdır. Neden sadece $ scope.randomItems = getRandomItems (this.data.length); –
$ scope.randomItems = getRandomItems (this.data.length) öğesinden sonra olayı ele alırsam, bu değişiklik oluşturulmadan önce başlıyor gibi görünüyor. Değişiklik (vurgu) oluşturulduğunda bir geri arama yapabilmeyi istiyorum. Angular ile küçük bir DOM-render denemesi üzerinde çalışmak ve bu durumda liste 10 000+ ve daha sonra kod, değişiklik yapılmadan önce çalışmaya başlar. –
Eğer liste o kadar uzunsa, o zaman belki de listenin ilerleyişini düzeltmek için biraz izin vermesi veya alması için ne kadar büyüklükte olursa olsun onu öbeklemek en iyi uygulamadır. Her müşterinin, tümüyle genişleyen ve işleyen bir veri setiyle mükemmel bir şekilde başa çıkmasını bekleyemezsiniz. –