我正在玩一个由 Ember 数据支持的 Ember 应用程序。领域语言有点具体,所以我将使用术语库和图像来表示模型。这两者是相关联的:Gallery 有很多图像。
当我路由到画廊时,插座中填充了galleryView,它将所有图像呈现为缩略图。它还有一个出口,“选定”图像显示为全尺寸。这在使用嵌套路由时效果很好。
对我来说,关键是我希望画廊的索引路由默认显示画廊中的第一张图片。我发现这实施起来有点棘手。
在路由时,画廊可能尚未从后端获取。这对画廊本身没有任何问题,但我没有设法引用尚未加载的画廊的尚未加载的关联图像。
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 的内容并尝试返回一个空对象或结果中的“第一个”图像。
我是否应该甚至不尝试任何类似的操作,而是在加载画廊后触发转换?如果是这样,我喜欢关于在哪里“安全地”触发该转换的提示。它应该仅在达到画廊索引状态时触发,而不是在每次加载画廊时触发。
我现在不再胡说八道了。请让我澄清我的问题的任何部分,我会更新它。