具有功能的流星渲染模板
Meteor Rendering Templates with Functions
我有一个游戏,我想要一个可以呈现模板的系统,如果他们还有任何冒险经历的话。
Meteor.methods({
adventure: function () {
if(Meteor.user().adv > 0)
{
Meteor.users.update({_id: this.userId}, {$inc: {'adv': -1 }});
this.render('adv');
}
else
{
this.render('noadventures');
}
},
})
我有一个名为 adv 的模板,但它无法加载..
使用 Blaze.render 或 Blaze.renderWithData - 像这样:
Meteor.methods({
adventure: function () {
if(Meteor.user().adv > 0)
{
Meteor.users.update({_id: this.userId}, {$inc: {'adv': -1 }});
Blaze.render(Template.adv, $('body').get(0);
}
else
{
Blaze.render(Template.noadventures, $('body').get(0);
}
},
})
您可以用它做更多事情 - documentation 非常好。
一些背景信息:Meteor 原则之一是 "data on the wire",这意味着只将最基本的必需品发送到客户端(实际数据),因此您不能在服务器上编译模板并发送它们给客户。当然,从技术上讲这是可能的,并且在某些情况下您需要这样做(例如发送 html 电子邮件时),但通常这是一个坏主意。
在 Meteor 方法中调用 Blaze 渲染函数是行不通的,因为 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}}
我有一个游戏,我想要一个可以呈现模板的系统,如果他们还有任何冒险经历的话。
Meteor.methods({
adventure: function () {
if(Meteor.user().adv > 0)
{
Meteor.users.update({_id: this.userId}, {$inc: {'adv': -1 }});
this.render('adv');
}
else
{
this.render('noadventures');
}
},
})
我有一个名为 adv 的模板,但它无法加载..
使用 Blaze.render 或 Blaze.renderWithData - 像这样:
Meteor.methods({
adventure: function () {
if(Meteor.user().adv > 0)
{
Meteor.users.update({_id: this.userId}, {$inc: {'adv': -1 }});
Blaze.render(Template.adv, $('body').get(0);
}
else
{
Blaze.render(Template.noadventures, $('body').get(0);
}
},
})
您可以用它做更多事情 - documentation 非常好。
一些背景信息:Meteor 原则之一是 "data on the wire",这意味着只将最基本的必需品发送到客户端(实际数据),因此您不能在服务器上编译模板并发送它们给客户。当然,从技术上讲这是可能的,并且在某些情况下您需要这样做(例如发送 html 电子邮件时),但通常这是一个坏主意。
在 Meteor 方法中调用 Blaze 渲染函数是行不通的,因为 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}}