在我看來,顯示嵌套模板實際上是Ember比其他框架有優勢的地方。
這應該是非常簡單的使用嵌套資源。在你的路由器中,你可以做類似
App.Router.map(function() {
this.resource('products', function() {
this.route('product', { path: '/product_id' });
});
});
很明顯,你必須在每個相應的路由中獲取你的數據。喜歡的東西
App.ProductsRoute = Ember.Route.extend({
model: function() {
this.store.find('product');
}
});
App.ProductsProductRoute = Ember.Route.extend({
model: function(params) {
this.store.find('product', params.product_id);
}
});
在你product
模板,你需要包含所有子路由的{{outlet}}
渲染成(即products.product
)。
例如
product.handlebars
{{#each}}
{{name}}
{{/each}}
{{outlet}}
產品/ product.handlebars
Product: {{id}}
退房資源部分in the guides。
編輯
如果你想在主列表到products
模板和products.product
模板的顯示方式不同,從products
模板中刪除主列表,並把它放在products.index
和的products.product
模板。
然後指定其父模型ProductsIndexController
和ProductsProductController
needs
。這將使兩個模板都可以通過controllers.products
訪問產品。
App.ProductsIndexController = Ember.ObjectController.extend({
needs: 'products',
products: Ember.computed.alias('controllers.products')
});
App.ProductsProductController = Ember.ObjectController.extend({
needs: 'products',
products: Ember.computed.alias('controllers.products')
});
請參閱this jsbin和associated guides。
是的我知道這種方法,這就是爲什麼我選擇使用餘燼。但是你描述的方法是如果我想讓主列表在整個應用程序中以相同的方式進行格式化。對於我的產品模板,會有一種樣式,對於我的產品模板,它的樣式會有所不同。所以,如果我試圖在我的第二個模板中加載數據,那麼ember會「困惑」它應該顯示哪些數據,並且不會加載這兩組數據。 – mhartington
看到我上面的編輯。 – Feech
非常感謝您的幫助 – mhartington