Meteor:each循环事件处理程序没有上下文

Meteor:each循环事件处理程序没有上下文,meteor,spacebars,Meteor,Spacebars,我使用带有非托管本地集合的#each循环为表单生成一系列输入字段。但是,当我尝试在事件处理程序中使用this.\u id时,它是未定义的。事实上,传递给事件处理程序的上下文是针对窗口的。非常感谢您在我的事件处理程序中提供任何帮助,以发现哪里出了问题,以及如何获得适当的上下文,如此 代码是: <h4 class="page-header">Children on this account</h4> {{#each children}} <div id={{_id}}

我使用带有非托管本地集合的#each循环为表单生成一系列输入字段。但是,当我尝试在事件处理程序中使用this.\u id时,它是未定义的。事实上,传递给事件处理程序的上下文是针对窗口的。非常感谢您在我的事件处理程序中提供任何帮助,以发现哪里出了问题,以及如何获得适当的上下文,如

代码是:

<h4 class="page-header">Children on this account</h4> 
{{#each children}}
<div id={{_id}} class="form-group col-md-12 child-form-instance">
    <div class="form-group col-sm-5 col-xs-12">
        <input type="text" name="childFirstName" class="form-control" placeholder="Child's First Name">
    </div>

    <div class="form-group col-sm-5 col-xs-10">
        <input type="text" name="childLastName" class="form-control" placeholder="Child's Last Name" value="{{_id}}">
    </div>
    <div class="form-group col-xs-2">
        <button type="button" class="btn btn-danger remove-child" aria-label="remove child">
            <span class="glyphicon glyphicon-trash"></span>
        </button>
    </div>
</div>
{{/each}}
<div class="form-group">
    <input type="button" id="addChild" class="btn btn-success" value="Add child">
</div>
addChild按钮一切正常,并且在DOM中正确分配了
\u id
s,但是remove child类正在记录
窗口的上下文。

您正在使用的将
与父作用域进行词汇绑定的类。因此,您无法获得
子对象的范围

为了解决此问题,只需将模板事件更改为:

Template.signup.events({
    // ...
    'click .remove-child': function (event, template) {
        console.log(this);
    }
    // ...
});

好的,您正在使用箭头函数,它将以词汇形式绑定
。结果,你得到了错误的背景。是的,这就是问题的全部<代码>函数()
修复它。看来我应该多读一读ES2015,而不是照搬我看到的一些惯例。谢谢你的帮助,马蒂亚斯!
Template.signup.events({
    // ...
    'click .remove-child': function (event, template) {
        console.log(this);
    }
    // ...
});