簡體   English   中英

如何在Ember.js模板中顯示hasMany記錄?

[英]How to display hasMany records in Ember.js template?

我有這樣定義的模型:

App.Question = DS.Model.extend({   
    title: DS.attr( 'string' ),  
    answers: DS.hasMany('App.Answer') 
});

App.Answer = DS.Model.extend({   
    title: DS.attr( 'string' ),  
    wynikid: DS.attr( 'number' ) 
});

並從RESTAdapter獲取返回如下數據的數據:

{
    "questions": [
        {
            "id": 77,
            "title": "O której wstajesz?",
            "answers": [
                {
                    "id": 159,
                    "title": "O godzinie 6",
                    "wynikid": 57
                },
                {
                    "id": 160,
                    "title": "O godzinie 7",
                    "wynikid": 56
                },
                {
                    "id": 161,
                    "title": "O godzinie 12",
                    "wynikid": 55
                }
            ]
        },
        {
            "id": 76,
            "title": "Kot czy kominiarz?",
            "answers": [
                {
                    "id": 156,
                    "title": "Kocur",
                    "wynikid": 57
                },
                {
                    "id": 157,
                    "title": "Kominiarz",
                    "wynikid": 56
                },
                {
                    "id": 158,
                    "title": "Ani to ani to",
                    "wynikid": 55
                }
            ]
        },
        {
            "id": 75,
            "title": "Wybierz ulubione imię",
            "answers": [
                {
                    "id": 153,
                    "title": "Bożydar",
                    "wynikid": 57
                },
                {
                    "id": 154,
                    "title": "Aleksander",
                    "wynikid": 56
                },
                {
                    "id": 155,
                    "title": "Andrzej",
                    "wynikid": 55
                }
            ]
        },
        {
            "id": 74,
            "title": "Wybierz liczbę",
            "answers": [
                {
                    "id": 152,
                    "title": "Liczba 13",
                    "wynikid": 56
                },
                {
                    "id": 151,
                    "title": "Liczba 7",
                    "wynikid": 55
                },
                {
                    "id": 150,
                    "title": "Liczba 1",
                    "wynikid": 57
                }
            ]
        },
        {
            "id": 78,
            "title": "Ulubiona pora roku",
            "answers": [
                {
                    "id": 162,
                    "title": "To lato",
                    "wynikid": 57
                },
                {
                    "id": 163,
                    "title": "Jesień / Wiosna",
                    "wynikid": 56
                },
                {
                    "id": 164,
                    "title": "To zima",
                    "wynikid": 55
                }
            ]
        }
    ]
}

現在我想完成的是顯示一個這樣的列表:

O której wstajesz?
 O godzinie 6
 O godzinie 7
 ...
Kot czy kominiarz?
 ...

我試圖在Ember.js模板中使用它:

 {{#each controller}}

  {{title}}<br>

    {{#each answer in answers}}

    \t{{title}}<br>

    {{/each}}

  {{/each}}

並顯示問題,但沒有回答。 我在控制台中沒有任何錯誤,並且JSONLint也看不到JSON的任何問題。

如何使其運作?

我用:

handlebars1.0.0.0.js ember-1.0.0.0.min.js余燼數據:v0.13-238-gbf84978

最新版本的ember / ember-data不支持嵌入式記錄。 這是在此處記錄的 ,但是我發現解決方法非常笨拙,無法自己使用。

也許最好的解決方案是加載您的答案記錄,使其與JSON根中的問題記錄一起顯示。 當然,這是假定您可以控制JSON格式,因此,如果不是這樣,則此答案不適用。 如果您使用的是active-model-serializers,則可以通過embed: :idinclude: true選項來完成。 您將擁有一個類似於以下內容的question_serializer.rb

class QuestionSerializer < ActiveModel::Serializer
  attributes :id, :title
  has_many :answers, embed: :id, include: true
end

還有一個answer_serializer.rb與類似

class AnswerSerializer < ActiveModel::Serializer
  attributes :id, :title, :wynikid
end

我相信這樣就可以了。 我昨天才遇到這個問題,並在這里發布了一個stackoverflow問題,但是今天早些時候我想出了問題並回答了我自己的問題。 我能夠以與嘗試使用車把代碼基本相同的方式獲得JSON的打印輸出!

編輯:語法。

最新的余燼不支持嵌入式記錄。 但您可以手動解析嵌入

http://emberjs.jsbin.com/AkovAPu/4-示例(如果localhost:8888 / questions返回json,則可以使用-{“ questions”:[...)

http://emberjs.jsbin.com/AkovAPu/4/edit-來源(請看extractArray)

暫無
暫無

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

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