我需要从我的meteor应用程序中的waitOn
函数中的RouteController访问会话变量,我在模板中的onCreated
块上设置会话变量:
Template.practicalQuestionForm.onCreated ->
Session.set 'domId', Random.id()
然后我需要从我的控制器访问该Session变量Session.get 'domId'
,查看waitOn
:
@testsAddQuestionController = testsQuestionsController.extend
template: ->
qType = Router.current().params.type
if qType == 'practical'
'practicalQuestionForm'
else if qType == 'mcq'
'mcqQuestionForm'
waitOn: ->
console.log Session.get 'domId'
Meteor.subscribe 'currentSessionUploads', Session.get 'domId'
data: ->
questions: TestQuestions.find()
test: Tests.findOne slug: this.params.slug
previous: TestQuestions.find({}, sort: createdAt: 1, limit: 1).fetch().pop()
但是我只能得到undefined
有人可以告诉我这是否可能?如果没有,你可以告诉我什么其他选择?
提前致谢。
答案 0 :(得分:2)
如果您想在Session
函数中使用waitOn
,则需要确保此代码将在客户端上执行。
例如:
waitOn: function() {
var domId = undefined;
if(Meteor.isClient) {
domId = Session.get('domId');
}
return Meteor.subscribe('currentSessionUploads', domId);
}
请注意,您需要检查出版物(服务器端)中是否未定义domId
。
此外,您必须检查您的Session
变量是否已定义,否则您将获得无限循环,您的控制器将变得疯狂:
Template.practicalQuestionForm.onCreated ->
if not Session.get 'domId'
Session.set 'domId', Random.id()