流星反应会话:不工作(为什么?)

时间:2015-07-17 06:35:09

标签: meteor meteor-blaze

我在Meteor.js中遇到了被动会话的问题。

演示:Meteor Pad

Template.rows.helpers({
  'rows': function () {
     return Session.get('rows'); // data set in Session
  }
});

Template.count.events({
  'click .mdl-radio__button': function (e) {
    // target represents a number of selected rows (1, 2, 5, or 10)
    var value = $(e.currentTarget).val();
    Session.set('limit', value);
  },
  'click #reset': function () {
    Session.set('limit', 0);
    Session.set('rows', null);
  },
  'click #run': function () {
    // should only get rows when run() is pressed
    Session.set('rows', currentItems);
  }
});

用户应该能够选择要接收的新数量的集合,受限制控制。但是,我一直收到以下错误:

Error: Match error: Failed Match.OneOf or Match.Optional validation

任何想法为什么?有人能给我看一个有效的MeteorPad演示吗?

2 个答案:

答案 0 :(得分:0)

我的meteorpad遇到了麻烦。但你的问题不是Session。问题是您使用Tracker.autorun。您应该阅读docs on that

您假设Tracker.autorun(getItems)返回getItems返回的内容。事情并非如此艰难。您需要在currentItems内设置autorun(在您的情况下为getItems)。

getItems = function () {
  if (Session.get('limit') > 0) {
    currentItems = Items
      .find({}, {limit: Session.get('limit')})
      .map(function (item, index) {
        item.index = index + 1;
        return item;
      });
  } else {
    currentItems = null;
  }
};

答案 1 :(得分:0)

终于明白了。显然,Session会创建一个字符串,以便^\s*===\s*(?<Title>\w+?)\s*===\s*$ 将限制设置为Session.set('limit', 1)。当然,可以在Mongo集合请求中处理字符串。

解决方案是使用"1"