基本上我的Meteor应用程序中有以下内容。页面上有一个加号,单击时应触发add
操作。如果add
操作由于某种原因失败,我想在html中向用户显示一个警告框。
在使用jQuery的“正常”过程编程中,这意味着找到正确的元素并将带有警报的html附加到该节点。这对于Meteor中的反应模型来说不是很合适,所以我不知道该怎么做。
问题是要了解如何设置模板渲染所需的值。到目前为止,这是我的代码,它根本不起作用。
HTML
<template name="wish">
<div data-wish-id={{_id}} class="count items-bought">
<a href="#" class="plus-sign"></a>
<a href="#" class="minus-sign"></a>
</div>
{{#if alertMessage}}
{{> alert}}
{{/if}}
</template>
<template name="alert">
<div class="alert alert-{{alertLevel}} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert"><span
aria-hidden="true">×</span><span class="sr-only">Close</span></button>
{{alertMessage}}
</div>
</template>
JS
Template.wish.events({
'click .plus-sign' : function(e, template) {
e.preventDefault();
var parent = $(e.target).parent();
var id = parent.data('wish-id');
buy(id, function(err) {
if(err) { set_values_alertMessage_and_alertLevel_on_right_scope(); }
});
return false;
}
}
答案 0 :(得分:0)
使用Session
来控制应用程序状态。
当您的应用启动时,请设置默认会话值:
Meteor.startup(function() {
Session.setDefault("alertMessage", null);
});
然后在你的模板中听取它:
Template.wish.alertMessage = function() {
return !Session.equals("alertMessage", null);
}
并在需要时设置:
buy(id, function(err) {
if (err) Session.set("alertMessage", err.message);
});
然后画出来:
Template.alert.alertMessage = function() {
return Session.get("alertMessage");
}