在 Meteor 应用程序中应该在哪里启动会话值?
Where should Session values be initiated in a Meteor app?
根据 Dan Dascalescu 的回答 here,我想在 Meteor 中实现这样的动态模板:
在main.html中:
<body TEXT="#000000">
<div class="container">
{{> mnuScheduler}}
{{> Template.dynamic template=currentTemplate}}
</div>
</body>
在main.js中:
Template.body.helpers({
currentTemplate: function () {
return Session.get('curTemplate');
}
});
但显然我需要将会话变量 'curTemplate' 初始化为我要显示的第一个模板,例如:
Session.setDefault('curTemplate', 'tblScheduler');
...然后像这样在其他地方动态设置它:
Session.set('curTemplate', somethingElseBasedOnContext);
我的问题是,初始 (setDefault) 属于哪里?应该是我 main.js,连同 Template.body.helpers(我也有 Meteor.subscribe("bla") 电话吗?
以下三个位置中的任何一个都可以:
if (Meteor.isClient) {
Session.set('curTemplate', 'tblScheduler'); // <---
console.log('Meteor.isClient');
Meteor.startup(function() {
//Session.set('curTemplate', 'tblScheduler') // <---
console.log('Meteor.startup');
});
Template.body.onCreated(function() {
//Session.set('curTemplate', 'tblScheduler') // <---
console.log('Template.body.onCreated');
});
Template.body.helpers({
currentTemplate: function() {
return Session.get('curTemplate');
},
});
}
使用此代码,浏览器日志显示启动时调用它们的顺序:
Meteor.isClient
Template.body.onCreated
Meteor.startup
Meteor.startup 不会 运行 直到 DOM 准备就绪,但是在这种情况下这不是一个因素。
Meteor 在构建应用程序方面非常灵活,因此最好在方法上保持一致。
在这里您可以决定将启动代码放在 Meteor.startup 块中,或者您可以决定根据呈现正文模板的需要,Template.body.onCreated 是它的正确位置。但尽量保持一致!
根据 Dan Dascalescu 的回答 here,我想在 Meteor 中实现这样的动态模板:
在main.html中:
<body TEXT="#000000">
<div class="container">
{{> mnuScheduler}}
{{> Template.dynamic template=currentTemplate}}
</div>
</body>
在main.js中:
Template.body.helpers({
currentTemplate: function () {
return Session.get('curTemplate');
}
});
但显然我需要将会话变量 'curTemplate' 初始化为我要显示的第一个模板,例如:
Session.setDefault('curTemplate', 'tblScheduler');
...然后像这样在其他地方动态设置它:
Session.set('curTemplate', somethingElseBasedOnContext);
我的问题是,初始 (setDefault) 属于哪里?应该是我 main.js,连同 Template.body.helpers(我也有 Meteor.subscribe("bla") 电话吗?
以下三个位置中的任何一个都可以:
if (Meteor.isClient) {
Session.set('curTemplate', 'tblScheduler'); // <---
console.log('Meteor.isClient');
Meteor.startup(function() {
//Session.set('curTemplate', 'tblScheduler') // <---
console.log('Meteor.startup');
});
Template.body.onCreated(function() {
//Session.set('curTemplate', 'tblScheduler') // <---
console.log('Template.body.onCreated');
});
Template.body.helpers({
currentTemplate: function() {
return Session.get('curTemplate');
},
});
}
使用此代码,浏览器日志显示启动时调用它们的顺序:
Meteor.isClient
Template.body.onCreated
Meteor.startup
Meteor.startup 不会 运行 直到 DOM 准备就绪,但是在这种情况下这不是一个因素。
Meteor 在构建应用程序方面非常灵活,因此最好在方法上保持一致。
在这里您可以决定将启动代码放在 Meteor.startup 块中,或者您可以决定根据呈现正文模板的需要,Template.body.onCreated 是它的正确位置。但尽量保持一致!