如何在事件的Meteor中获取父数据上下文
我正在开发一个简单的meteor flashcard应用程序。有一系列问题,每个问题都有:文本、正确答案、错误答案 答案被连接到一个数组中并被洗牌,然后模板会列出一个问题和可能的答案。当用户单击答案时,我将从事件中获取JS中的父数据上下文 比如:如何在事件的Meteor中获取父数据上下文,meteor,Meteor,我正在开发一个简单的meteor flashcard应用程序。有一系列问题,每个问题都有:文本、正确答案、错误答案 答案被连接到一个数组中并被洗牌,然后模板会列出一个问题和可能的答案。当用户单击答案时,我将从事件中获取JS中的父数据上下文 比如: <button type="button" question="{{../_id}}" class="btn btn-default answer"> {{this}} {{#with ../this}}{{this._id}}{{/wit
<button type="button" question="{{../_id}}" class="btn btn-default answer">
{{this}} {{#with ../this}}{{this._id}}{{/with}}
</button>
{{this}{{{{with../this}{{this.{u id}}{{/with}}
用于在模板中显示父问题ID,但如何正确执行此操作。我们的目标是创建一个函数,该函数可以捕获事件,并将答案与“正确答案”进行比较,以获得相等的结果,如果有效,则会给您一个分数。谢谢
最终提出了这个解决方案,但我不太喜欢它,也不认为它是正确的:
{{each}}
{{#with ../this}}
<button type="button" question="{{../_id}}" class="btn btn-default answer">X</span></button>
{{/with}}
{{this}}
{{/each}}
{{each}
{{{有../这个}
X
{{/与}}
{{this}}
{{/每个}}
我通常会这样做:
Template.myTemplate.answers = function () {
var self = this;
// assume that this.answers is a list of possible answers
return _.map(this.answers, function (answer) {
return _.extend(answer, {
questionId: self._id,
});
});
}
Template.myTemplate.events({
'click button': function (event, template) {
// ...
},
});
然后,您就可以开始了,在模板中,您可以执行以下操作:
<template name="myTemplate">
{{#each answers}}
<button data-question="questionId">...</button>
{{/each}}
</template>
然后在事件回调中,您可以访问this
,它表示呈现按钮
元素的上下文,以及template.data
这是附加到模板实例的数据上下文,因此实际上这或多或少是您的“父上下文”
编辑
请注意,新的模板引擎,即
blaze
,允许我们在模板中使用点表示法,因此不再需要上述方法,{../\u id}}
非常好。您可以在事件处理程序中访问Template.parentData(n)
: