Demir-yönlendiricinin, oluşturmadan önce koleksiyonumda başarılı bir yöntem bulmasını beklediğim bir çözüm arıyorum.demir-yönlendirici Toplama işlemine başlamadan önce Collection.findOne() öğesini veri nesnesi olarak bekleyiniz
Benim rota şöyle görünür: Bu iyi çalışır
this.route('business', {
path : '/business/:type/:_id',
waitOn : function() {
return Meteor.subscribe('business', this.params._id);
},
data : function() {
return Business.findOne({_id: this.params._id});
}
});
. Görünüşe göre, demir-yönlendirici, Müşterinin doğru Belgesini geri almak için Koleksiyonun aboneliğini bekliyor. Ancak şablonumda ihtiyaç duyduğum verilerin findOne işlevi için bir gecikme var. Aynı sorunla Herkes için
Template.businessItemItem.rendered = function() {
console.log(Router.current().data()); // undefined
window.setTimeout(function(){
console.log(Router.current().data()); // [Object]
}, 1000);
}
Çözüm . Yalnızca rotanız için "eylem" yöntemini ekleyin:
action : function() {
if (this.ready()) this.render();
}
Bu yöntemde her şey benim için iyi çalışıyor.
Sen benim kahramanımsın! Bu beni deli ediyordu. Çözümünüz mükemmel, ama daha fazla araştırma yapacağım: eğer demir-yönlendiricide bir hata varsa, github üzerinde bir sorun açmalıyız. Teşekkürler! – physiocoder
Evet, bence gereken şekilde çalışmıyor. başvuru: https://github.com/EventedMind/iron-router/blob/dev/DOCS.md#waiting-on-subscriptions-waiton waitOn yönteminin render edilmeden önce verileri beklediğini ve döndürdüğünü söylüyor - ama bu Şu anda yaptığım şey değil ... – TJR
Data() işlevi önce (ve sonra) action() yöntemi çağrıldığında (tarayıcının yeniden yüklenmesini sağlayarak rotayı yeniden yüklediğimde) bir durumun olduğunu eklemek için hızlı bir güncelleştirme . Bu durumda bile bu çözüm işe yaramıyor :-(bu yüzden eğer '(bu thisready())' i döndürdüm, 'post() metodunun ilk satırı olarak bu yazıyla önerildi: https://groups.google.com/forum/#!topic/meteor-talk/lK3v9ZxIbco – physiocoder