Meteor每个占位符用于删除特定文档

时间:2015-04-08 13:09:50

标签: mongodb session meteor each spacebars

如果刚刚删除的文档,我如何在空格键{{#each}}中有会话变量?我想通知用户他们刚刚删除了某些内容,并且该消息将代替相同的文档。

例如:

{{#each list}}
   <span>{{number}}</span>
{{/each}}

将编译为:

<span>1</span>
<span>2</span>
<span>3</span>

如果我要从集合中删除第二个文档{number:2},那么模板会根据预期对更改作出相应的反应:

<span>1</span>
<span>3</span>

相反,我希望它在Mongo remove语句之后显示以下内容:

<span>1</span>
<span>You have deleted 2</span>
<span>3</span>

1 个答案:

答案 0 :(得分:0)

您可以通过使用_uihooks在每次删除元素时插入占位符元素来实现此目的。我创建了一个meteor pad with an example

client.js

Template.body.events({
  "click #add-item": function() {
    Items.insert({name: "Item"});
  },
  "click .delete": function() {
    Items.remove({_id: this._id});
  }
});

Template.body.helpers({
  items: function() {
    return Items.find({});
  }
});

Template.body.rendered = function() {
  Meteor.defer(function(){
    document.getElementById("items")._uihooks = {
      removeElement: function(node) {
        var placeholder = document.createElement("li");
        $(placeholder).html("Placeholder");
        $(placeholder).insertBefore(node);
        $(node).remove();
      }
    }
  });
}

main.html中

<body>
<ul id="items">
{{#each items}}
  <li>
    {{name}}
    <button class="delete">delete</button>
  </li>
{{/each}}
</ul>
<button id="add-item">Add item</button>
</body>