#ember.js
#ember.js
Вопрос:
Мы рассматриваем возможность перехода с Backbone на Ember. Есть несколько проблем, на которые я не могу получить ответы из документов.
1) Ember-Data кэширует свои данные. Наше приложение многопользовательское, поэтому другие пользователи должны иметь возможность видеть новые записи, созданные всеми. Есть ли способ обойти это? Я прочитал в другом сообщении, что при передаче строки запроса данные ember не кэшируются, это правда? Если это так, могу ли я тогда просто всегда отправлять строку запроса, и ничего не будет кэшироваться?
2) У Ember data есть единственная модель в маршрутизаторе, которая, как представляется, создается во время загрузки маршрута. Я вижу, что вы можете запрашивать данные из нескольких источников, возвращая объект со многими this.store.поиск вызовов. Допустим, у меня есть элемент select, и когда вы выбираете опцию, другой select заполняется элементами на основе первого select (что требует обратного вызова на сервер). Как это будет работать, как я могу получать данные модели по требованию (не во время загрузки маршрута)?
Ответ №1:
Я не уверен, отвечает ли это на ваш вопрос, но вы всегда можете позвонить
model.reload()
для повторной выборки данных с сервера, чтобы вы могли работать с актуальными данными.
Комментарии:
1. Так это обновит все модели, которые в настоящее время находятся в ember-data? Нужно ли мне вызывать это в начале каждого маршрута?
2. это обновит конкретную модель, изначально созданную в вашем маршруте
3. Я полагаю, что недостатком этого является то, как я узнаю, что запись была извлечена из кэша. В противном случае я бы сделал 2 вызова на сервер.
4. Ну, вы действительно не можете обойти хранилище (иначе ember-data не был бы очень полезен), поэтому не запрашивая у сервера информацию о состоянии вашей модели (является ли она актуальной или нет) Я не думаю, что вы можете «угадать», была ли запись обновлена кем-то другим. Если вы не хотите использовать хранилище, возможно, ember-data — это не то, что вы ищете, и вам было бы лучше использовать простые вызовы jquery ajax.
Ответ №2:
Возможно, вы захотите рассмотреть Faye (http://faye.jcoglan.com /), что позволило бы вам настроить паблик / вспомогательный сервер, который мог бы обновлять ваш магазин, прослушивая интересующие темы. Для интерфейса потоковой передачи используется WebSocket. Затем вы могли бы поместить новые объекты в хранилище, удалить или обновить существующие объекты, которые сервер мог бы опубликовать клиенту.