2015-03-22 14 views
6

Bu kodu reaktif hale getirmek istiyorum. Bir yolu var mı? BildiğimBir Meteor Yardımcısını Nasıl Reaktif Yaparım?

Template.foo.helpers({ 
    info: function(){ 
     var user = Meteor.user(); 
      if (user && user.profile) 
       return user.profile.info; 
    } 
}); 

bir eşdeğer olup olmadığını merak ediyorum Foo.find({}, {reactive:false})

olduğunda bir yolu yoktur.

cevap

10

Aradığınızı düşünüyorum, here açıklanan Tracker.nonreactive(func) işlevi. Belgelere göre, yürütülmesi gereken bu işleve bir işlev iletmeniz gerekir ve bu işlevin sonucu bu işlevin sonucunu döndürür. Ayrıca, bu işlev kendi tanımladığınız işlevdeki herhangi bir reaktif veri kaynağı güncellemesine dikkat etmeyecektir.

böyle yardımcın fonksiyonunu yeniden yazma öneririm:

Template.foo.helpers({ 
    info: function() { 
     return Tracker.nonreactive(function() { 
      var user = Meteor.user(); 
      if(user && user.profile) { 
       return user.profile.info; 
      } else { 
       // return some other appropriate value if the if-statement above 
       // is not fulfilled 
      } 
     }); 
    } 
}); 
2

Tracker.nonreactive'ı (zavallı cevap için üzgünüm, telefonu kullanıyorum) arıyorsun.