是否可以在呈现模板之前执行javascript脚本?
我不想要使用铁路由器 - 如果可能的话。
在我的项目中有一个脚本可以翻译模板中的几个单词。这些翻译必须从文件中读出,因此在输出正确之前会有延迟。我现在想要在开头读取整个文件并将其保存在缓存中。保存后,模板会获得正确的单词。
然后我想完成模板渲染。
这样的事情:
// Client only
Handlebars.registerHelper('translate', function(stringPart) {
return 'translated String'; // this string comes from function "prepareTranslate" which saves the values
});
var prepareTranslate = function(){
[...]
// preparing completed:
Meteor.renderCurrTemplates();
}();
答案 0 :(得分:1)
最简单的方法就是阻止在您的翻译准备好{{#if}}
块之前呈现单个模板:
<body>
{{#if translationsReady}}
{{> yourTemplate}}
{{/if}}
</body>
if (Meteor.isClient) {
UI.registerHelper("translationsReady", function() {
return !!Session.get("translations");
});
UI.registerHelper("translate", function(key) {
return Session.get("translations")[key];
});
// assuming your translations are coming from a Meteor.call:
Meteor.call("translations", "en-US", function(error, result) {
if (!error) {
Session.set("translations", result);
}
});
}
这使用Session
。如果更符合您的需求,您还可以使用本地Meteor.Collection
或您自己的Deps.Dependency
对象。