【问题标题】:Using Meteor: strange behavior using helper functions in template helpers使用 Meteor:在模板助手中使用助手函数的奇怪行为
【发布时间】:2014-08-12 18:02:49
【问题描述】:

我在使用 Meteor 时遇到了一些奇怪的行为。

我在 client/ 中定义的模板助手中。函数“percentCompleted”是定义在 client/lib/helper.js 中的辅助函数。当我在返回行中调用“percentCompleted”时,percentCompleted 正常完成。但是,每当我在返回行之外调用 percentCompleted 时,控制台都会记录一个错误,即函数“percentCompleted”未定义。为什么要根据模板助手中调用它的位置来定义或未定义助手函数?

这行得通:

Template.chapter.percentComplete = function(){
  if(_.isEmpty(this))
    return "";

  return percentCompleted(this)
}

这会引发“percentCompleted”未定义的错误。

Template.chapter.percentComplete = function(){
  if(_.isEmpty(this))
    return "";

  var percentCompleted = percentCompleted(this)  

  return percentCompleted;
}

【问题讨论】:

  • 仔细检查加载顺序。 docs

标签: javascript templates meteor meteor-blaze meteor-helper


【解决方案1】:

问题是您有一个名为percentCompleted 的局部变量,它隐藏了函数percentCompleted。将变量重命名为其他名称,它应该可以工作。

请注意,Javascript 中的局部变量声明被提升到函数的顶部,所以它的行为就像你写的一样:

Template.chapter.percentComplete = function(){
  var percentCompleted;
  if(_.isEmpty(this))
    return "";

  // Here we attempt to call the function in the percentCompleted
  // var, but that is undefined.
  percentCompleted = percentCompleted(this)  

  return percentCompleted;
}

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2014-01-08
    • 2014-06-20
    • 2015-01-26
    • 2015-09-14
    • 2015-01-06
    • 2013-06-19
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多