如何在quickform属性_id中引用父模板

时间:2017-09-18 14:37:23

标签: javascript templates meteor ecmascript-6 meteor-blaze

考虑以下代码。

{{#each assignments}}
  {{#with eachClientDetails}}
    {{#quickRemoveButton collection=assignment _id=this._id }}
       Delete
    {{/quickRemoveButton}}
  {{/with}}
{{/each}}

在上面的代码中,我正在迭代每个assignment,每个assignment都有一个Client详细信息。每个Client详细信息我都会添加删除按钮。

助手:

eachClientDetails(){
    var client = Clients.find({_id: this.clientId}).fetch()[0];
    console.log(client);
    return client;
}

但问题是,在为_id的{​​{1}}分配属性时,我只能从当前上下文中分配数据(即quickForm)。我只需要访问this._id的上下文(希望像assignment)。但我得到以下错误,

_id=../_id

是否可以使用任何助手和内容来获取父模板Can only use `this` at the beginning of a path. Instead of `foo.this` or `../this`, just write `foo` or `..`.

1 个答案:

答案 0 :(得分:1)

您可以使用#each in#let代替#each#with解决覆盖上下文的问题:

{{#each assignment in assignments}}
  {{#let client=(eachClientDetails assignment)}}
    {{#quickRemoveButton collection=assignment _id=assignment._id }}
       Delete {{client.name}}
    {{/quickRemoveButton}}
  {{/let}}
{{/each}}

此处,添加了{{client.name}}只是为了展示如何访问client的字段。

帮助者的代码:

eachClientDetails(assignment){
    var client = Clients.findOne({_id: assignment.clientId});
    console.log(client);
    return client;
}