2015-06-27 143 views
0

我有一个组的集合模板。每个组文档都包含一个数组,每个元素包含一个数字和一个布尔值。该模板被布置如下:访问流星模板助手中的父数据

<template name="group"> 
    <li class="{{#if checked}}checked{{/if}} groupBox"> 

    <button class="delete">&times;</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">&times;</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按钮。我有以下的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. 
    } 
}); 

我知道我可以在deleteNumber方法使用$拉动运营商在我的MongoDB的查询,但为了获得正确的组,我需要从模板中的数字获得父数据。

谢谢xamfoo的回答。

工作deleteNumber方法现在建立这样的:

deleteNumber: function (groupId, number) { 
    Groups.update(groupId, {$pull: {numbers: {"number": number}}}); 
} 

回答

2

你应该能够通过this获得上下文的事件处理程序和组数据与Template.instance().data

Template.group.events({ 
    "click .deleteNumber": function() { 
     var data = Template.instance().data; 
     Meteor.call("deleteNumber", data._id, this.number); 
    } 
    }); 

在这种情况下,参数deleteNumber为:

Meteor.methods({ 
    deleteNumber: function (groupId, number) { 
    //Need to delete number from group via MongoDB query here. 
    } 
}); 

您也可以使用Template.currentData()Template.parentData()访问数据上下文。

+0

这工作完美无瑕。非常感谢你的帮助。我知道有一些方法可以在模板处理程序中获取上下文,而不仅仅是在模板中,但我无法弄清楚。 – Brodan

+1

很高兴我能帮忙:) – xamfoo

相关问题