【发布时间】:2015-06-27 01:06:18
【问题描述】:
我有一个用于一组组的模板。每个组文档包含一个数组,每个元素包含一个数字和一个布尔值。模板布局如下:
<template name="group">
<li class="{{#if checked}}checked{{/if}} groupBox">
<button class="delete">×</button>
<input type="checkbox" checked="{{checked}}" class="toggle-checked-group" />
<span class="text">{{name}}</span>
<ul>
{{#each this.numbers}}
<li class="checked">
<button class="deleteNumber">×</button>
<input type="checkbox" checked="{{checked}}" class="toggle-checked-number" />
<span class="text">{{number}}</span>
</li>
{{/each}}
</ul>
<form class="new-number">
<input type="text" name="number" placeholder="Type to add a number to this group" />
</form>
</li>
</template>
一个示例组文档的布局如下:
{
"_id": "pSpNcJKDPhRtGhtov",
"name": "Sample Group",
"createdAt": "2015-06-27T00:45:39.137Z",
"owner": "t2ELweZsZqJXNQqdZ",
"username": "brodan",
"checked": false,
"numbers": [
{
"number": "1234567",
"checked": true
}
]
}
当我单击 deleteNumber 按钮时,我需要能够从 numbers 数组中删除特定数字。我有以下 javascript,但不知道如何获取要在 MongoDB 查询中使用的父上下文:
Template.group.events({
"click .deleteNumber": function () {
Meteor.call("deleteNumber");
}
});
Meteor.methods({
deleteNumber: function (numbers) {
//Need to delete number from group via MongoDB query here.
}
});
我知道我可以在我的 MongoDB 查询中的 deleteNumber 方法中使用 $pull 运算符,但是为了获得正确的组,我需要从模板中的数字中获取父数据。
感谢 xamfoo 的回答解决了。
工作 deleteNumber 方法现在设置如下:
deleteNumber: function (groupId, number) {
Groups.update(groupId, {$pull: {numbers: {"number": number}}});
}
【问题讨论】: