我正在制作我的第一个重要的Ember.js应用程序,并且遇到了一些障碍。在使用ember-data击中一个太多的显示停止错误之后,我决定使用Ember.Object滚动我自己的模型(至少现在 - ember-data看起来真的很棒,很快就会真实)。 / p>
我的基本模型结构是:
我的模板中有一个{{#linkTo}
}帮助器,应该允许用户点击集合中的下一个图像,如下所示:
<button>
{{#linkTo image controllers.images.nextImage}}
Next Image
{{/linkTo}}
</button>
此模板具有AlbumController
的上下文,needs: ["images"]
。 controllers.images.nextImage
是一个计算属性,它计算出当前显示图像的ID,然后使用它来查找Image
ArrayProxy集合中下一个模型的Images
模型。
我的问题是:
页面加载后,我收到错误消息Uncaught Error: assertion failed: Cannot call get with 'id' on an undefined object.
我假设这是因为{{#linkTo}}
帮助器试图从id
的返回获取controllers.image.nextImage
属性,Images
是一个依赖{{1}的计算属性从服务器加载的集合。这种异步行为正在使用幕后承诺进行处理,但是{{#linkTo}}
帮助器似乎需要在页面加载时立即返回的有效上下文。
我的问题是:
{{#linkTo}}
帮助程序,这些帮助程序具有不能立即获得的计算属性?我的一些想法是:
{{#action}}
帮助程序代替{{#linkTo}}
我有written up a JSBin example主要是代码完成的,除了我无法操纵哈希URL来触发嵌套路由,所以我不得不在应用程序模板中做所有事情。