Meteor 模板和模板助手

4

我遇到了一个问题,不太理解并且无法解决它...

简单的例子。

模板助手:

Template.bookDetails.helpers({

  book: function() {        

    console.log("Current router :_id: " + Router.current().params._id);
    return Books.findOne(Router.current().params._id);

}

一些模板代码的示例:

这是一个段落标签。

<template name="bookDetails">
   ...
   {{#with book}}
     Title: {{book.title}} <br>
     Author: {{book.author}} <br>
     ISBN: {{book.isbn}} <br>
     ...more...
   {{/with}}
   ...
</template>

问题是:为什么在模板中调用book.some_field时,我会看到多次打印console.log()?

这正常吗?


1
除非您的代码中有其他更改助手函数数据上下文的内容,否则您应该只看到日志一次。 例如,您的 Router.current().params._id 是否有任何更改? 另外...如果您愿意,您可以使用 {{title}} 而不是 {{book.title}} - Scalahansolo
1个回答

2

是的,这很正常,因为你的代码实际上多次调用了book助手函数。

为了简化事情,你需要将你的代码替换为以下代码:

{{#with book}}
  Title: {{title}} <br>
  Author: {{author}} <br>
  ISBN: {{isbn}} <br>
{{/with}}
#with 结构会将当前数据上下文设置为帮助程序返回的值,然后您可以访问每个属性而无需引用 book

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接