Я пытаюсь выяснить, «правильный» способ структурировать часть моего приложения Emberструктурирования 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, а также - должны ли видео быть под категориями? По существу, будет список курсов, каждый со своим набором категорий. Каждое видео должно подпадать под одну категорию. После ввода его таким образом, что имеет смысл для видео, чтобы быть по категориям, если все они должны быть под какой-то категории ...
Edit: Вот реализация я просто пошел с ради времени:
Моя 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
является то, что я построил для коллекции видео.
Это прекрасно работает, но теперь есть куча видеомоделей во всем мире; на курсе (все они) и на каждой категории (все из них относятся к этой категории).
Может ли видео быть в нескольких категориях? –
Есть вероятность того, что видео имеет более одной категории? – Hrishi
Вы также можете посмотреть видеоролики с боковой загрузкой - ссылки на видео, которые я предполагаю. – Hrishi