使用变量作为名称来访问另一个数组的嵌套元素

时间:2015-10-03 06:57:51

标签: javascript meteor spacebars

我为一个数组执行每个循环,我在一个帮助器中构建:

Template.article.helpers({
    section: function() {
        return [
            {type: 'cars', sectionTitle: 'Cars'}, 
            {type: 'vegetables', sectionTitle: 'Vegetables'}
        ];
    },
});

文章的数据来自路由器:

Router.route('/article/:_id', {
    name: 'article',
    data: function() {
        return {
            article: Articles.findOne({ _id: this.params._id })
        }
    }   
});

但是现在我想要使用帮助器的article访问type的子元素。因此,在此示例中,每个循环将完成两次:我首先要使用../article.cars然后../article.vegetable。我希望你理解我的问题。我想通过帮助程序类型获取子元素的名称:

<template name="article">
    {{#each section}}
        <h1>{{this.sectionTitle}}</h1>

        <ul>
        {{#each ../article.type}} <!-- should get '../article.cars' and '../article.vegetable' -->
            <li>{{this.title}}</li>
        {{/each}}
        </ul>
    {{/each}}
</template>

我想将type的内容用作变量名。如果类型为&#39; cars&#39;,那么我想使用../articles.cars'. Which would be something like篇文章[&#39;汽车&#39;] which would result of文章[type] . But in meteor this writing is not possible. And articles.type `是不同的东西。

1 个答案:

答案 0 :(得分:2)

只需使用其他助手:

s: function(article) {
    return article[this.type];
}

并在空格键中发送参数:

{{#each s ../article}}