angularjs bir öğeden offsetHeight hesaplanamıyor. Bunun nedeni, öğenin henüz herhangi bir içeriği olmadığı zaman yüksekliğini hesaplamasıdır.yönerge şu var
timeout
kullanmadan bu sorunu nasıl çözebilirim? Bu sorun için yerleşik bir çözüm var mı?
angularjs bir öğeden offsetHeight hesaplanamıyor. Bunun nedeni, öğenin henüz herhangi bir içeriği olmadığı zaman yüksekliğini hesaplamasıdır.yönerge şu var
timeout
kullanmadan bu sorunu nasıl çözebilirim? Bu sorun için yerleşik bir çözüm var mı?
sorun ng-repeat
tembel görüntüleyicilerine ve bağlantı işlevi bundan önce kovuluyor. Bu sorunu, her bir özet döngüsünde elem[0].offsetHeight
değerini değerlendirecek watcher
alarak çözebilirsiniz. Bu nedenle, ng-repeat
bunu tamamladığında, bir özet döngüsünü çağırır ve elem[0].offsetHeight
değerindeki değişiklik nedeniyle, onun geri çağrısını çağırır. Yapabileceğiniz
Yönergesi
var app = angular.module('plunker', []);
app.directive('myObject', function(){
return {
restrict: 'A',
link: function(scope, elem){
var calculateHeight = scope.$watch(function(){
return elem[0].offsetHeight;
}, function(newVal, oldVal){
//my awesome code here.
console.log(newVal, oldVal);
calculateHeight(); //de-registering watcher for performance reason
})
}
};
});
Diğer alternatif yolu ng-repeat eleman üzerindeki diğer yönergesini yerleştirebilirsiniz, hangi buna kez bir olay render ile tamamlar $emit
olacak & daha sonra bu olayı dinleyecek ve yüksekliği hesaplayacak olan direktif içinde olay dinleyicisine sahip olacağız.
Tek bir değişiklik kaydettikten sonra izleyiciyi nasıl durdurabilirim? – gespinha
@GEspinha udpated cevaba bakın lütfen –
Neden sonuçtaki işlevi yeniden çalıştırıyorsunuz? – gespinha