meteor 空格键 : {{#if}} inside {{#each}} produces unexpected results

标签 meteor spacebars

{{#each}} 中 {{#if}} 的这个简单示例产生了意想不到的(对我而言)结果:

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

输出:

是的

  • 我期待一个 3 x 是的列表...

    这段代码有什么问题?

    最佳答案

    每个助手中的数据上下文是 testItems 数组,但您正在尝试访问父上下文的变量(测试模板的数据上下文)。所以自然是未定义,从而导致 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>
    

    关于 meteor 空格键 : {{#if}} inside {{#each}} produces unexpected results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532200/

    相关文章:

    javascript - Meteor 数据上下文,将数组传递到每个空格循环中

    javascript - 文件上传更改事件触发次数过多

    javascript - 如何修改订阅的搜索查询?

    javascript - Meteor Cordova iOS 视频元素未加载捕获的视频

    javascript - 我如何知道为什么 Meteor 自动运行被触发

    mongodb - 如何在mongodb中更新数组的子数组字段

    javascript - Meteor:如何仅包含存在的模板?

    javascript - #each 完成后如何执行回调?

    jquery - 如何循环遍历 jQuery 中所有选中的复选框,并在每个循环中获取它们的值?

    javascript - 将动态表转换为数组