干杯!我有路线:
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');
}
});
问题:如何在模板中渲染游览席位?
更新
我的灯具看起来像那样:
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>
它给了unfind回来。 经过一些调试我发现,params中没有任何id,params是空的,这就是为什么我无法在TourSeatsRoute函数中获得正确的模型。
答案 0 :(得分:18)
如果您使用的是ember-1.0-pre.4 +,则仅针对您所在的特定路线返回参数,而不是整个网址。有一些discussion about this here。
我认为此时所需的方法是使用this.modelFor
传递您在父路由中设置的父资源的名称。所以在你的情况下,它将是:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function() {
return this.modelFor("tour");
}
});
答案 1 :(得分:2)
您只需要从model
方法返回模型:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function(params) {
return TravelClient.Tour.find(params.tour_id);
}
});
然后在您的模板中,您可以执行以下操作:controller
是上下文:
{{model.seats}}
答案 2 :(得分:1)
我还是EmberJS的新手但是我会编写我的路由器和这样的路线。
我不确定您是否需要将 post 资源包装在 posts 资源中。请注意ToursSeatsRoute中的复数形式
TravelClient.Router.map(function() {
this.resource('tours', function() {
this.route('/:tour_id/seats');
});
});
这会给你以下网址:
/ tours - 您可以将其映射到ArrayController
/ tours /:tour_id / seats - 您可以将其映射到ObjectController
TravelClient.ToursSeatsRoute = Ember.Route.extend({
model: function(params) {
console.log(params);
return TravelClient.Tour.find(params.tour_id);
}
});
试一试?或者可能将您的代码放在JSFiddle中?