更新到流星0.8时,包含函数的返回值中的预期null或模板

时间:2014-04-24 13:13:53

标签: meteor

我按照说明(https://github.com/meteor/meteor/wiki/Using-Blaze)尝试将项目从流星0.7.2升级到meteor0.8.1.3,但遇到了一些错误和异常。

错误:

Uncaught Error: Expected null or template in return value from inclusion function, found: false localhost:3000/packages/spacebars.js?f49560fc90a8d71b7637d9596696078881b8c812:72

这个错误来自helper.js,其代码如下:

UI.registerHelper('renderHeader', function () {

   if (settingsSubscription.ready()) {
       return Template.header;
  }else {
      return "";
  }
});

在index.html中我使用 {{renderHeader}} 来实现模板。我认为错误意味着当settingSubscrition未准备好时函数返回空模板。那么当setupSubscription尚未就绪时,我应该返回什么模板?

2 个答案:

答案 0 :(得分:3)

由于Meteor 0.8模板不是函数,但是对象因此无法以您习惯的方式插入模板。 你应该看一下作为Meteor 0.8的一部分引入的Blaze rendering engine,并且处理渲染的方式与旧的Spark引擎完全不同 - 你的代码在那里工作过。

我还推荐了最受欢迎的软件包Iron-Router,它可以帮助您以非常强大的方式呈现您的布局(并做更多)。

答案 1 :(得分:2)

建议您查看https://github.com/meteor/meteor/wiki/Using-Blaze#templatefoo-is-not-a-function-and-does-not-return-a-string

在您的情况下,您只需执行类似

的操作
UI.registerHelper('renderHeader', function () {
 if (GroundDB.ready())
   return Template.header;
})

并称之为

{{> renderHeader}}