我使用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;
}
答案 0 :(得分:0)
问题是你有一个名为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;
}