2013-02-03 63 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