2013-08-27 4 views
1

В topic.index я отправляю список тем как JSON без отправки идентификаторов отношений (в теме много сообщений, много пользователей, правки, предпочтения и т. Д. И т. Д., Которые я не показываю в topic.index, следовательно, я не хочу отображать все идентификаторы отношений при посещении topic.index, используя App.Topic.find())Ember данные. Перезагрузите данные при посещении темы из списка тем

Так что всякий раз, когда нажата ссылка на тему, данные ember не извлекаются из темы /: topic_id, если обнаруживает, что конкретная тема уже загружена (но на этот раз все отношения необходимы). Есть ли способ заставить данные ember-данные перезагружаться каждый раз, когда мы переходим к новой ссылке, независимо от того, загружены ли данные или нет?

Перезагрузка также уменьшает количество запросов, поступающих на сервер.

Предположим, что в теме есть много сообщений и много комментариев: При рендеринге списка тем мы храним post_ids и comment_ids в каждой из тем, при рендеринге темы, данные ember теперь будут делать два запроса на сервер. Один для получения всех сообщений с post_ids и всеми комментариями.

Если мы вынуждены перезагружать, мы можем обойти все данные отношений с одним запросом вместо многих, чтобы получить данные hasMany или принадлежит данным.

ответ

1

Ember Данные в настоящее время ленивые нагрузки ассоциаций. Таким образом, вы должны иметь возможность отправлять все идентификаторы в своем исходном json.

При нажатии на конкретную тему вы можете запросить запись еще раз (используя store.reloadRecord) и отбросить все модели, которые вам нужны, или просто позволить Ember Data запрашивать их, если они используются.

+0

Где мы должны использовать store.reloadRecord? в setupController? За время, когда мы запрашиваем перезагрузку для получения записей с сервера, Ember-Data также будет связывать боковые нагрузки с доступными идентификаторами, чтобы это не мешало нескольким запросам на загрузку ассоциаций. – Gogu

+0

, когда вы определяете 'model' для вашего' TopicRoute'. Вы можете проверить, находится ли запись в магазине с чем-то вроде 'store.hasReferenceForId (App.Topic, topic_id)'. Это не отличное решение, так как вы будете перезагружать свои данные каждый раз, когда вы достигаете этой темы. –

+0

Я строил сайт, связанный с спортом, и поэтому я хотел бы каждый раз перезагружать данные. функция модели не вызывается всегда. – Gogu

Смежные вопросы