显示警告框作为对Meteor错误的响应

时间:2014-07-02 15:55:49

标签: twitter-bootstrap meteor

基本上我的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">&times;</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;
    }
}

1 个答案:

答案 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");
}