我有一個應用程序,有很多層的關係。我有一個n輪比賽,每輪有n場比賽,每場比賽有n個席位,每個席位有1個入場。以下是json結構的示例:顯示數據的多級關係與sideloaded json和Ember的數據
{
"tournament": {
"id": 1,
"title": "March Madness!!!",
"rounds": [1],
"active_round": 1
},
"rounds": [
{
"id": 1,
"tournament": 1,
"matchups": [1, 2]
},
{
"id": 2,
"tournament": 1,
"matchups": [3]
}
],
"matchups": [
{ "id": 1, "round": 1, "seats": [1, 2] },
{ "id": 2, "round": 1, "seats": [3, 4] },
{ "id": 3, "round": 2, "seats": [5, 6] }
],
"seats": [
{ "id": 1, "matchup": 1, "entry": 1 },
{ "id": 2, "matchup": 1, "entry": 2 },
{ "id": 3, "matchup": 2, "entry": 3 },
{ "id": 4, "matchup": 2, "entry": 4 },
{ "id": 5, "matchup": 3, "entry": "" },
{ "id": 6, "matchup": 3, "entry": "" }
],
"entries": [
{
"id": 1,
"seats": [1]
},
{
"id": 2,
"seats": [2]
},
{
"id": 3,
"seats": [3]
},
{
"id": 4,
"seats": [4]
}
]
}
我無法獲取內容。這裏是我的router.js:
App.Router.map(function() {
this.resource('tournament', { path: "/" });
});
App.TournamentRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function (resolve, reject) {
[..we just get the data return the json object above to setupController...]
});
},
setupController: function (controller, model) {
controller.set('model', model);
[i do a little data computation here prior to the renderTemplate function]
},
renderTemplate: function() {
var controller = this.controllerFor('tournament');
this.render('tournament');
}
});
我tournament.hbs模板看起來是這樣的:
<h1>{{tournament.title}}</h1>
{{#each round in rounds}} Round id: {{round.id}} <br/>
{{#each matchup in round.matchups}} matchup id: {{matchup.id}}
<div class="matchup">
{{#each seat in matchup.seats}}
<div class="entry">
{{seat.entry.id}}
</div>
{{/each}}
</div>
{{/each}}
{{/each}}
而且我得到屏幕上的以下內容:
March Madness!!!
Round id: 1
matchup id:
matchup id:
Round id: 2
matchup id:
所以,一點點它的一部分工作。我已經在控制檯上做了一些工作,在比賽級別上,matchup對象實際上是預期的值「1」和「2」,而不是matchups [0]和matchups [1],這就是爲什麼沒有匹配級別旁邊的「id」屬性。我不確定使用約定在Ember數據中有多少「魔力」,並且找不到任何使用此層次結構的示例。由於
UPDATE:
我包括我的模型,以便他們現在,第一個響應者的建議。我看到了相同的結果。
App.Tournament = DS.Model.extend({
title: DS.attr('string'),
active_round_index: DS.attr('number'),
rounds: DS.hasMany('App.Round', { embedded: 'always' })
});
App.Round = DS.Model.extend({
tournament: DS.belongsTo('App.Tournament'),
matchups: DS.hasMany('App.Matchup', { embedded: 'always' })
});
App.Matchup = DS.Model.extend({
round: DS.belongsTo('App.Round'),
seats: DS.hasMany('App.Seat', { embedded: 'always' })
});
App.Seat = DS.Model.extend({
matchup: DS.belongsTo('App.Matchup'),
entries: DS.hasMany('App.Entry', { embedded: 'always' })
});
App.Entry = DS.Model.extend({
title: DS.attr('string'),
seats: DS.hasMany('App.Seat')
});
**另一個更新**
所以,事實證明,在Ember.RSVP.Promise的記錄使用將不會使用所有的灰燼數據,它需要的「神奇」 RESTAdapter來做這件事。我插入了RESTAdapter,現在情況變得更好了。
我已經更新了原來的職位與我的模型,我加了你的建議,但它並沒有幫助,只是還沒有。 – panzhuli