我正在玩一個Ember-data支持的Ember應用程序。領域語言是有點特定的,所以我將使用術語畫廊和圖像的模型。這兩個相關聯:圖庫有很多圖像。如何索引路由到「默認」關聯記錄?
當我路由到一個圖庫時,出口填充了galleryView,它將所有圖像渲染爲縮略圖。它還有一個出口,其中「選定」圖像顯示爲全尺寸。這很適合使用嵌套路由。
對我來說,關鍵是我希望圖庫的索引路線默認顯示圖庫中的第一幅圖像。我發現這實施起來有點棘手。
在路由時候Gallery可能還沒有從後端獲取。這對於圖庫本身沒有任何問題,但是我還沒有設法引用尚未被加載的圖庫。
connectOutlets: function(router) {
var controller = router.get('galleryController');
var context = controller.get('defaultImage');
controller.connectOutlet('image', context);
}
defaultImage是我一直在試圖引用圖片我還不知道的ID或有一個真正的參考。到目前爲止,我還沒有能夠返回某種形式的數據,以便在數據加載時真正更新視圖。
我會讓自己感到難堪,並展示這種方法...即使它現在不能正常工作。
defaultImage: Ember.computed(function() {
var image = Ember.Object.create({
isLoaded: false
});
if (this.get('content.isLoaded')) {
var images = this.get('content.images');
image = images.objectAt(0);
}
return image;
}).property('content.isLoaded')
因此,它是聽GalleryController的內容,並試圖在結果中返回一個空對象或所謂的「第一」形象。
我應該甚至可能甚至不嘗試任何事情,甚至在畫廊加載後觸發一個轉換?如果是這樣,我喜歡暗示哪裏能夠「安全地」觸發該過渡。它應該只在圖庫索引狀態達到時觸發,而不是每次加載圖庫時都觸發。
我會停止漫步現在。請讓我澄清我的問題的任何部分,我會更新它。
謝謝你。這按預期工作,看起來很乾淨。 –
澄清。我最終做的是將ImageController繼承到DefaultImageController ...作爲索引操作的特例。只要用戶選擇另一個圖像,我就可以使用普通的ImageController ...來獲取URL以顯示圖像ID路徑片段,從而轉變爲「圖像」路徑(圖庫,圖庫/索引的同級)的子路徑。 –