Dlaczego w poniższym podstawowym przykładzie zwrócona kolekcja wewnątrz renderowanej funkcji jest pusta?
Autopublikowanie jest włączone. Po załadowaniu strony komendy
Coll.find().fetch()
zawijających wewnątrz JavaScript zwróci konsoli poprawny zestaw wpisówMeteor template.render - Dlaczego kolekcja jest pusta?
Oto kod
t.js
Coll = new Meteor.Collection("coll");
if (Meteor.isClient) {
Template.tpl.rendered = function(){
console.log(Coll.find().fetch()); // <-- This line prints empty array
};
}
if (Meteor.isServer) {
Meteor.startup(function() {
if (Coll.find().count() === 0) {
var f = ["foo","bar"];
for (var i = 0; i < f.length; i++)
Coll.insert({f: f[i]});
}
});
}
I t.html
plik
<head>
<title>test</title>
</head>
<body>
{{> tpl}}
</body>
<template name="tpl">
Test tpl
</template>
Dzieje się tak, ponieważ Twoja kolekcja nie jest jeszcze załadowana. Zwolnione jest 'Template.render', nie oznacza to, że twoja kolekcja jest załadowana. sprawdź wątek [this] (http://stackoverflow.com/questions/15129827/). –