Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在事件的Meteor中获取父数据上下文_Meteor - Fatal编程技术网

如何在事件的Meteor中获取父数据上下文

如何在事件的Meteor中获取父数据上下文,meteor,Meteor,我正在开发一个简单的meteor flashcard应用程序。有一系列问题,每个问题都有:文本、正确答案、错误答案 答案被连接到一个数组中并被洗牌,然后模板会列出一个问题和可能的答案。当用户单击答案时,我将从事件中获取JS中的父数据上下文 比如: <button type="button" question="{{../_id}}" class="btn btn-default answer"> {{this}} {{#with ../this}}{{this._id}}{{/wit

我正在开发一个简单的meteor flashcard应用程序。有一系列问题,每个问题都有:文本、正确答案、错误答案

答案被连接到一个数组中并被洗牌,然后模板会列出一个问题和可能的答案。当用户单击答案时,我将从事件中获取JS中的父数据上下文

比如:

<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)