[英]Ember.js nested routes
干杯! 我有路線:
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>
座位是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>
並且它給予了不發現。 經過一些調試我發現,params中沒有任何id,params是空的,這就是為什么我無法在TourSeatsRoute函數中獲得正確的模型。
如果您使用的是ember-1.0-pre.4 +,則僅針對您所在的特定路線返回參數,而不是整個URL。 這里有一些討論 。
我相信此時所需的方法是使用this.modelFor
傳遞您在父路由中設置的父資源的名稱。 所以在你的情況下,它將是:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function() {
return this.modelFor("tour");
}
});
您只需要從model
方法返回model
:
TravelClient.TourSeatsRoute = Ember.Route.extend({
model: function(params) {
return TravelClient.Tour.find(params.tour_id);
}
});
然后在您的模板中,您可以執行以下操作,其中controller
是上下文:
{{model.seats}}
我還是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中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.