我按照说明(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尚未就绪时,我应该返回什么模板?
答案 0 :(得分:3)
由于Meteor 0.8模板不是函数,但是对象因此无法以您习惯的方式插入模板。 你应该看一下作为Meteor 0.8的一部分引入的Blaze rendering engine,并且处理渲染的方式与旧的Spark引擎完全不同 - 你的代码在那里工作过。
我还推荐了最受欢迎的软件包Iron-Router,它可以帮助您以非常强大的方式呈现您的布局(并做更多)。
答案 1 :(得分:2)
在您的情况下,您只需执行类似
的操作UI.registerHelper('renderHeader', function () {
if (GroundDB.ready())
return Template.header;
})
并称之为
{{> renderHeader}}