【问题标题】:Use of "#each" with multiple variables in Handlebars在 Handlebars 中使用带有多个变量的“#each”
【发布时间】:2019-10-24 02:18:07
【问题描述】:

当Handelbars中有多个#each时,如何用“this”“选择”一个值?

                {{#each marqueauction}}
                {{#each modelauction}}
                <div class="results__container--box">
                    {{this.marqueauction}}
                    {{this.modelauction}}
                </div>
                {{else}}
                <div class="results__container--box">
                    <p>Aucun résultat d'enchères n'est disponible pour ce modèle.</p>
                </div>
                {{/each}}
                {{/each}}

编辑:我想用 mongoose 调用我的 MongoDB 数据库并在盒子容器中显示结果。为此,我遍历了我的结果数组。

我的猫鼬模型:

const DemocarauctionSchema = new Schema({
    objectID: {
        type: Number
    },
    cars_getroute: {
        type: String
    },
    gm_url: {
        type: String
    },
    "results": { type: [{
        marque: {
            type: String
        },
        model: {
            type: String
        },
        model_year: {
            type: String
        },
        price_str: {
            type: String
        },
        prince_int: {
            type: Number
        },
        price_currency: {
            type: String
        },
        sold: {
            type: Boolean
        },
        auction_house: {
            type: String
        },
        auction_country: {
            type: String
        },
        auction_date: {
            type: String
        },
        auction_datetime: {
            type: String
        },
        auction_url: {
            type: String
        },
        image_urls: {
            type: String
        },
        price_int_eu: {
            type: Number
        },
    }]}    
}

我在 Express/Node 中循环遍历数组:

const [democarauctions] = result;

        let marqueauction = [];
        for (let i = 0; i < democarauctions.results.length; i++) {
            marqueauction.push(democarauctions.results[i].marque)
        }

        let modelauction = [];
        for (let i = 0; i < democarauctions.results.length; i++) {
            modelauction.push(democarauctions.results[i].model)
        }
...

我在“res.render”中调用结果数组:

res.render(demo, {
            results: democarauctions.results,
            marqueauction: marqueauction,
            modelauction: modelauction,
            modelyearauction: modelyearauction,
            etc.})

现在我想在我的 HTML 多个框中呈现每个结果,每个结果中包含 marqueauction、modelauction、modelyearauction。我用车把。

【问题讨论】:

    标签: handlebars.js


    【解决方案1】:

    最好避免使用this,而是使用命名block parameters

    {{#each marqueauction as |marque|}}
      {{#each modelauction as |model|}}
        <div class="results__container--box">
          {{marque}}
          {{model}}
        </div>
      {{else}}
        <div class="results__container--box">
          <p>Aucun résultat d'enchères n'est disponible pour ce modèle.</p>
        </div>
      {{/each}}
    {{/each}}
    

    我不确定您为什么要将原始集合拆分为多个集合,然后尝试在演示文稿中再次组合它们。直接使用结果即可。

    编辑:根据您更新的问题:

    {{#each results as |auction|}}
      <div class="results__container--box">
        {{auction.marque}}
        {{auction.model}}
      </div>
    {{else}}
      <div class="results__container--box">
        <p>Aucun résultat d'enchères n'est disponible pour ce modèle.</p>
      </div>
    {{/each}}
    

    【讨论】:

    • 谢谢,但我的错误是modelauction 没有嵌套在marqueauction 中,我不知道如何在同一级别上显示它们...
    • 所以你有两个不相关的集合?我不明白“同一级别”。你能编辑你的问题并澄清一下吗?
    • 不,它是同一个集合,但 modelauction 没有嵌套在 marqueauction 中。因此,当我尝试使用您的示例时,它不起作用(我认为这是问题所在)。很简单: "marqueauction": "Ferrari" "modelauction": "456" 而且我无法在容器框中显示它们
    • 在您的问题中(不在 cmets 中),提供两个集合的示例和您想要生成的示例。否则,我无法真正理解您要完成的工作。
    猜你喜欢
    • 2011-09-28
    • 2014-10-04
    • 1970-01-01
    • 2012-11-19
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2018-12-13
    相关资源
    最近更新 更多