Template.meteorError.rendered在错误meteor包中不起作用

时间:2014-02-24 22:10:07

标签: javascript coffeescript meteor

我正在尝试在my meteor project中使用 meteor-errors 包。

它有两个主要文件,包含javascript代码:

errors_list.js:

Template.meteorErrors.helpers({
    errors: function() {
       return Errors.collection.find();
    }
});

Template.meteorError.rendered = function() {
  var error = this.data;
  Meteor.defer(function() {
    Errors.collection.update(error._id, {$set: {seen: true}});
  });
};

errors.js:

Errors = {
  // Local (client-only) collection
  collection: new Meteor.Collection(null),

  throw: function(message) {
    Errors.collection.insert({message: message, seen: false})
  },
  clearSeen: function() {
    Errors.collection.remove({seen: true});
  }
};

但看起来像 Template.meteorError.rendered 方法不起作用。我无法将错误集合中的元素状态设置为 see:true

当我打电话给例如:

(服务器)

throw new Meteor.Error 401, "You need to login to add a new address"

(客户端)

Meteor.call "verify_address", address, name, (error, result) ->
  if error
    Errors.throw error.reason

我在标记中收到此错误消息,但我的浏览器控制台显示:

Errors.collection.find().fetch()

[Object]
_id: "MZ8TzpsKCXaeC33Jn"
message: "Address not the correct size"
seen: false
__proto__: Object

消息的被看见属性仍然是“假”。

最初的问题是错误的“X”图标在单击时不会删除错误。我们该如何删除错误?

1 个答案:

答案 0 :(得分:0)

出现奇怪行为的原因是,您手动抛出Meteor.Error而您的模板绑定到通过调用Errors.throw(message)来填充的集合

试试这个:

Errors.throw('You need to login to add a new address');