Некоторая предыстория: одним из принципов Meteor является «данные по сети», что означает, что клиенту отправляются только самые необходимые данные (фактические данные), поэтому вы не можете скомпилировать шаблоны на сервере и отправить их клиенту. Конечно, технически это возможно, и есть сценарии, которые вам нужны (например, при отправке электронных писем в формате html), но в целом это плохая идея.
Вызов функции рендеринга Blaze внутри метода Meteor не будет работать, потому что Blaze работает на стороне клиента, а ваш метод — на стороне сервера. Вы должны визуализировать в Meteor.call на стороне клиента следующим образом:
Meteor.methods({
adventure: function () {
if(Meteor.user().adv > 0) {
Meteor.users.update({_id: this.userId}, {$inc: {'adv': -1 }});
return true;
}
return false;
}
});
И на стороне клиента:
Meteor.call('adventure', function (error, result) {
if (error) {
// do something
}
else {
if(result)
Blaze.render(Template.adv, $('body').get(0);
else
Blaze.render(Template.noadventures, $('body').get(0);
}
}
Зачем вам нужно вызывать Blaze.render? Почему бы вам просто не сделать это в шаблоне, что-то вроде
{{> Template.dynamic template=template}}
person
Sander van den Akker
schedule
07.03.2015