2013-02-03 106 views
1

我完全卡住了,這裏是fiddle。在這個例子中,我希望能夠在訪問url/cars/details時載入更多的數據,但我無法弄清楚我該怎麼做。Ember js,在嵌套資源中加載附加模型

這裏是我的模型:

App.Cars = DS.Model.extend({ 
    name: DS.attr('string'), 
    details: DS.belongsTo('App.Details') 
}); 

App.Details = DS.Model.extend({ 
    name: DS.attr('string'), 
    color: DS.attr('string'), 
    wheels: DS.attr('string') 
}); 

在這裏,縮短興業

App.Cars.FIXTURES = [{ 
    id: 1, 
    name: 'Alfa Romeo', 
    details: 1 
}]; 

App.Details.FIXTURES = [{ 
    id: 1, 
    name: 'Alfa Romeo', 
    color: 'Red', 
    wheels: '14' 
}]; 

任何想法如何做到這一點,我敢肯定,我失去了一些東西很簡單,只是不」不知道是什麼。

編輯

有趣的是,在那如果我重裝上想展現細節的URL原來的項目,我看到的細節,但是這隻會發生一次。我打印的模型來安慰:

App.DetailsRoute = Ember.Route.extend({ 
    model: function(params) { 
    console.log(params) // prints once only if loaded app was loaded to this url 
    return App.Details.find(params.table_id); 
    }, 
    setupController: function(controller, model) { 
    console.log(model) // prints every time you click on a car 
    controller.set('content', model); 
    } 
}); 

回答

1

有兩件事情,使你的代碼不工作:

您傳遞car{{linkTo 'details' car}}幫手。 因此,car將是DetailsRoute(和DetailsController太)的模式,但你想要的,而不是car.details

{{#each car in controller}} 
    {{#linkTo 'details' car.details}} 
     {{car.name}} 
    {{/linkTo}} 
{{/each}} 

不工作的另一件事是,你的燈具id是整數。

將它們替換爲一個字符串,它將起作用,如you can see in this JSFiddle

+0

+1這是有道理的,謝謝! – Giedrius

+0

任何想法爲什麼這將顯示'undefined'一旦我開始使用真正的數據而不是FIXTURES?我查看了所有的數據,它和FIXTURES完全一樣,除了細節外,我可以在屏幕上顯示任何內容,但是當我使用FIXTURES時,我甚至可以在屏幕上顯示car.details,並顯示ember模型代碼。 – Giedrius

+0

@Giedrius這是一個有點難以找到問題的來源。也許你可以提出一個新的問題,包括髮送給服務器的請求的細節,響應,...... – louiscoquio