Meteor 模板和模板助手

Posted

技术标签:

【中文标题】Meteor 模板和模板助手【英文标题】:Meteor template and template helper 【发布时间】:2015-01-06 23:29:03 【问题描述】:

这是我无法理解也无法解决的问题......

简短的例子。

模板助手:

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>

问题是:为什么我看到 print console.log() 的次数与在模板中调用 book.some_field 的次数一样多?

正常吗???

【问题讨论】:

您应该只看到一次日志,除非您的代码中有其他内容正在更改该辅助函数的数据上下文。 IE。你的Router.current().params._id 有变化吗?另外...如果您愿意,可以使用title 而不是book.title 【参考方案1】:

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

您必须将您的代码替换为以下代码以使事情变得更简单:

#with book
  Title: title <br>
  Author: author <br>
  ISBN: isbn <br>
/with

#with 结构将当前数据上下文设置为助手返回的值,然后您可以访问每个属性而无需引用 book

【讨论】:

以上是关于Meteor 模板和模板助手的主要内容,如果未能解决你的问题,请参考以下文章

Meteor:从另一个助手访问模板助手(或变量)

如何从 Meteor 模板助手返回模板?

如何在模板助手中使用 Meteor 方法

如何在 Meteor 中将全局模板助手放在一起?

为啥 Meteor 模板助手不在上下文中返回变量?

在模板上下文中从另一个助手调用一个助手 (Meteor 0.9.4)