Клавиши пробела Meteor: {{#if}} внутри {{#each}} приводит к неожиданным результатам

Этот простой пример {{#if}} внутри {{#each}} дает неожиданный (для меня) результат:

HTML:

<head>
    <title>test</title>
</head>

<body>
    {{> test yes=true}}
</body>

template name="test">
    {{#if yes}}
        <span>yes</span>
    {{else}}
        <span>no</span>
    {{/if}}
    <ul>
        {{#each testItems}}
            {{#if yes}}
                <li>yes</li>
            {{else}}
                <li>no</li>
            {{/if}}
        {{/each}}
    </ul>
</template>

JS:

Template.test.helpers({
    testItems: [1,2,3]
});

Выход:

да

  • no
  • no
  • no

Я ожидал список с 3 x да ...

Что не так с этим кодом?


person willemx    schedule 23.10.2014    source источник


Ответы (1)


Контекст данных внутри каждого помощника — это массив testItems, но вы пытаетесь получить доступ к переменной родительского контекста (контекст данных тестового шаблона). Поэтому, естественно, yes не определено, что приводит к тому, что оператор if оценивается как false. Если вы обращаетесь к родительскому контексту, вы должны получить ожидаемые результаты.

<head>
    <title>test</title>
</head>

<body>
    {{> test yes=true}}
</body>

template name="test">
    {{#if yes}}
        <span>yes</span>
    {{else}}
        <span>no</span>
    {{/if}}
    <ul>
        {{#each testItems}}
            {{#if ../yes}}
                <li>yes</li>
            {{else}}
                <li>no</li>
            {{/if}}
        {{/each}}
    </ul>
</template>
person mark    schedule 23.10.2014