2012-06-23 26 views
22

Bilindiği gibi meteor, DOM öğesi için "tıklat" gibi olayları gösterir, ancak bir şablon veya kısmi yüklendiğinde tetiklenen bir yükleme olayı olup olmadığını merak ediyorum. Bunu nasıl başarabilirim?Meteor.js için şablon etkinleştirme olayı

Teşekkürler.

cevap

42

Meteor için 0.4.0 önizlemeden başlayarak, Template.myTemplate.created'u kullanabilirsiniz.

Template.myTemplate.created içinde DOM henüz hazır değil. Eğer DOM işlemek gerekiyorsa

, böyle Şablon nesnenin içinde durumunu izlemek yerine Template.myTemplate.rendered kullanmak ve bir boolean değeri kullanmak isteyebilirsiniz:

Template.myTemplate.rendered = function() { 
    if(!this._rendered) { 
     this._rendered = true; 
     console.log('Template onLoad'); 
    } 
} 
+3

'Template.myTemplate.rendered' Meteor 1.0.4 beri kullanımdan kaldırılmıştır. Geriye dönük uyumluluk için hala desteklenirken, daha yeni sürümler için 'Template.myTemplate.onRendered 'öğesini kullanmak isteyebilirsiniz. [Kaynak] (https://github.com/meteor/meteor/blob/devel/History.md#blaze-2) – Iwazaru

11

Aşağıdakiler işe yaramalıdır.
Meteor.defer, şablon DOM eklendiğinde ve oluşturulduktan sonra çağrılır.

<template name="temp"> 
    //regular stuff 
    {{invokeAfterLoad}} 
</template> 

Template.temp.invokeAfterLoad = function() { 
    Meteor.defer(function() { 
    $('mydiv').jquerify(); 
    }); 
    return ""; 
}; 
Ben, doğrusu kabul edilen yanıt biraz daha az brüt IMHO bu öneriyoruz
+1

Çok zeki hile! Teşekkürler, @Nachiket. – Gezim

+3

v1.1.0.2'den itibaren bu kalıp kullanımdan kaldırılmıştır. Bunun yerine 'Template.temp.helpers (...)' kullanın. – 10basetom

4

:

tahmin bunun reaktif nesneye tepki çünkü şablon yüklendikten sonra bir şeyler çağırmak istiyorum olmasıdır
<template name="temp"> 
    {{aReactiveHelper}} 
</template> 

Template.temp.aReactiveHelper = function() { 
    var someValue = Session.get('someValue'); 
    invokeAfterLoad(); 
    return someValue; 
}; 

var invokeAfterLoad = function() { 
    Meteor.defer(function() { 
    $('mydiv').doSomething(); 
    }); 
}; 

.

Buradaki avantaj, şablonunuza animasyon kodu eklemiyor olmanızdır.

+1

Bu hemen hemen aynı cevap bir Nachiket'in – Octopus

İlgili konular