Meteor / Iron 路由器 - 在 {{#each}} 循环中获取父数据

Meteor / Iron router - Get parent data in an {{#each}} loop

正在考虑:

Template.tasks.helpers({
    equals: function() {
        // var data = ?
        return data.test == this;
    }
});

并且:

<template name="tasks">
    <ul>
    {{#each elements}}
        <li>
            {{this}} {{#if equals}}Equals!{{/if}}
        </li>
    {{/each}}
    </ul>
</template>

例如:

Router.route('tasks', {
    data: function () {
        var example = {
            test: 42,
            elements: [1, 2, 42, 100]
        }
        return example;
    }
});

如何获取父数据上下文(通过 Iron Router 的 route() 方法与数据字段传递的那个)?

在上面的例子中,我们如何显示 42 - Equals! ?

我相信你正在寻找 Template.parentData():

Template.tasks.helpers({
    equals: function() {
        var data = Template.parentData();
        return data.test == this;
    }
});

这是一个活生生的例子:http://meteorpad.com/pad/LHxyDYkmNQB9H2Ezy/ParentData

我不知道这是否是唯一的方法,但我找到了在模板中使用 .. 的解决方案:

<template name="tasks">
    <ul>
    {{#each elements}}
        <li>
            {{this}} {{#if equals ..}}Equals!{{/if}}
        </li>
    {{/each}}
    </ul>
</template>

然后:

Template.tasks.helpers({
    equals: function(parentData) {
        return parentData.test == this;
    }
});