干杯!我有路线:
TravelClient.Router.map(function() {
this.resource('tours', function() {
this.resource('tour', { path: ':tour_id' }, function(){
this.route('seats');
});
});
});
还有一个模板:
<script type="text/x-handlebars" data-template-name="tour/seats">
{{...}}
</script>
Seats 是 Tour 对象的一个属性:
TravelClient.Tour.find(1).get('seats');
12
然后我像这样扩展我的 TourSeats 路线:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function(params) {
return TravelClient.Tour.find(params.tour_id).get('seats');
}
});
问题:如何在模板中渲染tour的座位?
更新:
我的固定装置看起来像这样:
TravelClient.Store = DS.Store.extend({
revision: 11,
adapter: 'DS.FixtureAdapter'
});
TravelClient.Tour = DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('string'),
seats: DS.attr('number')
});
TravelClient.Tour.FIXTURES = [{
id: 1,
title: "Brighton, England",
description: "Lorem ipsum dolor ... .",
seats: 12
},...
我已经改变了我的路线延伸到这个:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function(params) {
return TravelClient.Tour.find(params.tour_id);
}
});
在模板中:
<script type="text/x-handlebars" data-template-name="tour/seats">
{{tour.seats}}
</script>
更新 2:
<script type="text/x-handlebars" data-template-name="tour/seats">
{{controller.model.seats}}
</script>
它返回 undefind。 经过一些调试后我发现,params 中没有任何 id,而且 params 是空的,这就是为什么我无法在 TourSeatsRoute 函数中获得正确的模型。
最佳答案
如果您使用的是 ember-1.0-pre.4+,则只会为您所在的特定路由返回参数,而不是整个 URL。有一些 discussion about this here .
我相信此时所需的方法是使用 this.modelFor
传递您在父路由中设置的父资源的名称。所以在你的情况下,它将是:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function() {
return this.modelFor("tour");
}
});
关于javascript - Ember.js 嵌套路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642340/