流星模板功能的上下文

时间:2014-10-14 19:32:38

标签: javascript templates meteor

我有html喜欢:

<template name="chargers">
  {{#each list}}
    {{> charger}}
  {{/each}}
</template>

<template name="charger">
  <p>
    {{full_name}}
  </p>
</template>

有一个名为Chargers的流星集合,而chargers模板就可以很好地迭代它。但是,该集合没有full_name属性。这是通过连接name属性和address.country属性来计算的。

在我看来,有些咖啡脚本如:

Template.charger.full_name = ->
  console.log "full name of #{self} is #{name}"

  # return name

  if address.country.length() > 0
    return "#{name}, #{address.country}"
  else
    return name

会起作用,但在函数的第一行中回显的self是Window。我认为上下文将呈现Charger对象。奇怪的是,如果我取消注释#return name,整个过程都有效(但没有国家)。我已经从控制台窗口验证了数据是否存在于集合中。

对集合使用变换似乎只是添加伪属性的大锤子。

我尝试将其定义为帮手,但同样的事情发生了。什么是正确的方法。

1 个答案:

答案 0 :(得分:0)

对不起......正确的解决方案涉及到了一点Coffeescript:

if @address.country.length > 0
  return "#{@name}, #{@address.country}"
else
  return @name

因此,传递给模板助手的集合成员是this.memberName,因此,应该是Coffeescript中的@变量。 TIL。