我试图找出“正确”的方法来组织我的灰烬应用程序的一部分构建ember.js代码
基本概述:
比方说,我也有类似的定义的Course
模型:
var Course = DS.Model.extend({
videos: hasMany('video', { async: true }),
categories: hasMany('category', { async: true })
});
每个video
都有一个与之关联的category
。
在我的CourseView
或CourseController
,我该如何得到每个类别的视频列表?
首先,我尝试使用计算属性,但像this.get('model').get('videos')
这样的任何调用返回Promise
- 不是我想要的。
接下来,我看到一些关于使用它的帖子,然后在Promise
解决后在控制器上设置属性,所以View会在属性更改时更新,但这涉及到很多几乎回调的地狱,我希望有更好的方法来解决这个问题。
有什么方法可以在视图呈现之前“加载”视频/类别?理想情况下,我可以这样做:
{{#each category in categories}}
// render category-related stuff and only videos in this category
{{/each}}
将类别中的所有视频都更好吗?有没有什么办法可以定义/添加属性给模型而不需要将它们发送到服务器?我想这可以被看作是关于API设计的一个普遍问题 - 视频应该归类为什么类别?基本上会有一个课程列表,每个课程都有自己的一组类别。每个视频都必须属于一个类别。打字出来这种方式是有意义的影片是根据类别,如果所有的人都必须在某些类别......之后
编辑:这是我只是去了时间的缘故实现:
我Category
模型现在看起来是这样的:
var Category = DS.Model.extend({
name: attr('string'),
description: attr('string'),
videos: hasMany('video', { async: true })
});
在Course
模板:
...
{{#each category in model.categories}}
{{render "course/category" category}}
{{/each}}
...
在course/category
模板:
<h2 class="sub-title">{{model.name}}</h2>
{{render "course/video-gallery" model.videos}}
其中course/video-gallery
是什么我为影片的集合。
这工作正常,但现在有一堆视频模型无处不在;课程(全部)和每个类别(所有属于该类别的课程)。
视频可以分为多个类别吗? – 2015-02-11 11:19:42
视频是否有多个类别的概率? – Hrishi 2015-02-11 11:20:52
你也可以看看侧面加载视频 - 网址到我假设的视频。 – Hrishi 2015-02-11 11:23:25