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