簡體   English   中英

流星:遍歷集合內部的對象

[英]Meteor: Iterating over an Object inside of a Collection

我已經遇到過幾次這個問題,而且它讓我發瘋了。 簡短的問題:給定一個包含Object作為字段的集合時,我們如何在模板中迭代該對象。

集合中的每個條目如下所示:

{
    "_id" : "jsWmXTvocbSMM5JAF",
    "userId" : "gcko4Eo3YtZaWa8aj",
    "gameId" : "eduzNj8kWv7TdiEuE",
    "scores" : {
        "team1" : 3,
        "team2" : 1,
        "losses" : 7
    }
}

我們可以輕松地訪問模板中的{{userId}}{{gameId}} ,但是當然{{scores}}僅顯示了我們期望的[object Object]。

我嘗試使用{{#each scores}} ,我之前在數組中使用過,但是當然會拋出錯誤:

{{#each}} currently only accepts arrays, cursors or falsey values.

然后,我嘗試變得聰明(很少是個好主意),並將一堆Objects推入數組,然后將其返回到模板:

Template.scorePad.helpers({
    scoresArray: function () {
        var arr = [], scores = this.scores;
        for (var key in scores) {
            var obj = {};
            obj[key] = scores[key];
            arr.push(obj);
        }
        return arr;
    }
}

我不確定為什么我會認為這是個好主意,因為這只會為模板提供如下所示的數組:

[{team1: 3}, {team2: 1}, {losses: 7}]

是的,太好了。我可以#each over它,但是它只打印出object Object三次。 如預期的那樣。 但是我在這里,涵蓋了所有基礎。

Meteor github上有一個關於此的公開問題(關於無法與#each一起使用@key ),但是我真的希望有人能夠提供一個簡單的解決方案。

這個問題有點接近我在做什么,但根本不一樣。

我還嘗試了#with ,結果基本相同。

基本上,我正在尋找一種優雅的“流星”方式(如果有的話)。 顯然我不是專家。 那怎么辦

編輯以回答評論:為了澄清,在模板中,理想的解決方案(不起作用)將在我的html中使用類似的方法,並遍歷集合數據中分數中的每個key:value對:

<div> {{#each scores}} {{this.key}} {{this.value}} {{/each}} </div>

並遍歷集合數據中分數中的每個key:value對。

你可以嘗試一下:

Template.scorePad.helpers({
scoresArray: function () {
    var arr = [], scores = this.scores;
    for (var key in scores) {
        var obj = {};
        obj.key = key;
        obj.value = scores[key];
        arr.push(obj);
    }
    return arr;
  }
}

然后像這樣迭代它:

<div>
{{#each scores}}
    {{this.key}}
    {{this.value}}
{{/each}}
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM