Meteor 嵌套的#每个值在上下文之外都不可用

Meteor 嵌套的#每个值在上下文之外都不可用,meteor,meteor-blaze,meteor-helper,Meteor,Meteor Blaze,Meteor Helper,我每对都有一个嵌套,如下所示: {{{目标中的每个目标} <template name="task"> {{#each goal in goals}} {{#each task in relatedTasks goal}} <li> <span class="text task"><a href="#modal-taskedit" data-toggle="modal"><strong>{{task.taskName}}</st

我每对都有一个嵌套,如下所示: {{{目标中的每个目标}

<template name="task">
{{#each goal in goals}}
 {{#each task in relatedTasks goal}}
<li>
<span class="text task"><a href="#modal-taskedit" data-toggle="modal"><strong>{{task.taskName}}</strong></a> to {{goal.goalName}}<br> taskid: {{task._id}}
{{task.taskPostpone}}</span>
    {{#afModal class="btn btn-primary" collection="Tasks" operation="update" doc=task._id}}
  Update {{task.taskName}}
{{/afModal}}
</li> 
      {{/each}}
 {{/each}}    

</template>
当我点击一个任务时,我在控制台上收到这个错误:“未定义”,我真的不明白背后的原因。我做了一些研究,发现了一个可能的解决方案:可能是“单击.task”:函数(task)应该接收任务上下文或输入,以便它能够理解这一点的含义。 我有一个{{{afModal doc=task.{u id}},它也应该接收task的值。{u id},似乎不起作用,尽管我认为它放在正确的上下文中。
我有一种感觉,这两个问题在某种程度上是相关的。

问题是
{{{#each goal in goals}}
循环语法不会更改循环()中的数据上下文。它只需添加一个
goal
变量,以便在空格键模板中使用

Template.task.events({
  'click .task': function(){
    Session.set("selectedTask", this._id);
  } 
});
一种解决方案是将
{{{{}}
循环中的每个任务的内容移动到另一个模板,就像这样

<template name="task">
    {{#each goal in goals}}
        {{#each task in relatedTasks goal}}
            {{> goalTask goal=goal task=task}}
        {{/each}}
    {{/each}}
</template>

<template name="goalTask">
    <li>
        <span class="text task">
            <a href="#modal-taskedit" data-toggle="modal"><strong>{{task.taskName}}</strong></a>
            to {{goal.goalName}}<br>
            taskid: {{task._id}} {{task.taskPostpone}}
        </span>
        {{#afModal class="btn btn-primary" collection="Tasks" operation="update" doc=task._id}}
            Update {{task.taskName}}
        {{/afModal}}
    </li>
</template>

这是嵌套对象中事件的常见问题,如何获取单击对象的数据上下文

解决此问题的最简单方法是为每个嵌套级别创建一个模板。然后自动提供适当的上下文

<template name="goals">
{{#each goals}}
  {{#each task}}
    {{> task}}
  {{/each}}
{{/each}}
</template>

<template name="task">
<li>
  <span class="text task"><a href="#modal-taskedit" data-toggle="modal">
  <strong>{{task.taskName}}</strong></a> to {{goal.goalName}}<br>
  taskid: {{task._id}}{{task.taskPostpone}}</span>
  {{#afModal class="btn btn-primary" collection="Tasks" operation="update" doc=_id}}
    Update {{task.taskName}}
  {{/afModal}}
</li>
</template>

此方法仅允许您在第二个模板中访问
任务
的属性。他需要访问
任务
目标
。您也可以使用
模板访问父级的属性。parentData(n)
<template name="goals">
{{#each goals}}
  {{#each task}}
    {{> task}}
  {{/each}}
{{/each}}
</template>

<template name="task">
<li>
  <span class="text task"><a href="#modal-taskedit" data-toggle="modal">
  <strong>{{task.taskName}}</strong></a> to {{goal.goalName}}<br>
  taskid: {{task._id}}{{task.taskPostpone}}</span>
  {{#afModal class="btn btn-primary" collection="Tasks" operation="update" doc=_id}}
    Update {{task.taskName}}
  {{/afModal}}
</li>
</template>
Template.task.events({
  'click .task': function(){
    Session.set("selectedTask", this._id);
  } 
});