通过流星中的事件发送信息

时间:2014-07-18 19:19:33

标签: meteor

好的,我正在使用流星! Woo hoo我到目前为止都很喜欢它,但我实际上遇到了一个架构问题(或者它的超级简单而且我还不知道它)。

我有一个属于用户的名称列表。以及名称

旁边的删除按钮

名称 - x 名字 - x name - x

我想要一个功能点击' x',然后继续使用meteor事件处理程序从数据库中清除名称。我在找到如何将名称与点击一起传递以从数据库中删除它时遇到了麻烦。

我无法在模板中使用唯一ID来调用document.getElementById()(除非我想出了一个跟随数据库的整数系统。)

有没有人对此有好的想法?

1 个答案:

答案 0 :(得分:0)

这是一个完整的工作示例:

HTML

<body>
  {{> userEdit}}
</body>

<template name="nameChoice">
  <p>
    <span>{{name}}</span>
    <a href="#" class="remove"> x</a>
  </p>
</template>

<template name="userEdit">
  {{#each nameChoices}}
    {{> nameChoice name=this}}
  {{/each}}
</template>

JS

Users = new Meteor.Collection(null);

if (Meteor.isClient) {
  Meteor.startup(function () {
    Users.insert({nameChoices: ['foo', 'bar', 'baz']});
  });

  Template.userEdit.nameChoices = function () {
    return Users.findOne() && Users.findOne().nameChoices;
  };

  Template.nameChoice.events({
    'click .remove': function () {
      _id = Users.findOne()._id;
      Users.update(_id, {$pull: {'nameChoices': this.name}});
    }
  });
}

这实际上做了很多你不会在真实应用程序中做的事情(定义了一个仅限客户端的Users集合,假设只有一个用户,等等)。但主要的一点是,您可以使用每个nameChoice模板中的数据上下文来响应remove事件。这种方法几乎总能取代提出自己的人工身份系统的需要。如果有任何不清楚的地方,请随时提问。