如何将动态变量传递到Meteor中的模板?

时间:2013-11-11 01:05:47

标签: meteor handlebars.js

使用表格数据:

users = 
  _id: 'foo'
  books: [
    {name: 'book1'}
    {name: 'book2'}
  ]

<template name="user">
  {{#each get_users}}
    {{> shelf}}
  {{/each}}
</template>

<template name="shelf">
  {{#each books}}
    {{> book}}
  {{/each}}
</template>

<template name="book">
  <div contenteditable="true" data-id="{{_id}}">{{name}}</div>
</template>

我希望_id模板中的book引用用户的_id,但_id不在book模板的范围内。我希望能够执行类似{{> book _id}}的操作,但这不起作用,我认为因为book只能有一个参数,那就是每个{name: 'book1'} doc。< / p>

1 个答案:

答案 0 :(得分:1)

使用自定义块助手。如果Meteor允许自定义块助手的多个参数(这在Handlebars中支持)会更好。由于它没有(请参阅the wiki),这是我提出的最佳结果,将修改后的this传递给子模板book

<template name="shelf">
  {{#my_iterator}}
    {{> book}}
  {{/each}}
</template>

Templates.shelf.my_iterator = (options) ->
  html = "
  for book in this.books
    this.name = book.name
    html += options.fn this
  html