Я делаю простой веб-чат с Ember.Как иметь две разные модели в маршруте и подпрограмме?
У меня есть маршрут /chatrooms
, в котором перечислены несколько чатов, а затем у меня также есть /chatrooms/:chatroom_id
, который должен показывать фактический чат с сообщениями.
Второй маршрут находится в пределах первой, как это:
this.resource('chatrooms', function() {
this.route('show', {
path: ':chatroom_id'
});
});
Когда я достигаю /chatrooms
, вызов к серверу (/api/chatrooms
) список номеров возвращается и отображается, как ожидается, ,
Когда я нажимаю на комнату, приложение переходит на /chatrooms/id
, но вызов для получения сообщений (доступен по адресу /api/chatrooms/id
) не выполняется, даже когда я пытаюсь определить модель.
У меня похожий сценарий с пользователями. Список пользователей извлекается, а затем отображается. При щелчке имени отображается профиль. Второй звонок не сделан, но это нормально, поскольку Ember уже знает все о пользователе.
В моем текущем случае, когда список сначала возвращается, он включает всю информацию, кроме сообщений. Я считаю, что это было бы слишком много (10 чатов * 100 последних сообщений = 1000 элементов в моем JSON для каждого запроса). Поэтому я хочу называть сервер для сообщений только при выборе чата.
Вы знаете, как это сделать, или, может быть, что-то не так, что я делаю в первую очередь?
Обновления
код шаблона из app/templates/chatrooms.hbs
<h1>Chatrooms</h1>
<ul class="sub-menu nobullet flex mas">
{{#each chatroom in model}}
<li class="mrs">{{link-to chatroom.name "chatrooms.show" chatroom class="pat"}}</li>
{{/each}}
</ul>
{{outlet}}
В этом случае модель представляет собой массив из чатов.
Мои маршруты:
приложение/маршруты/chatrooms.js
export default Ember.Route.extend({
model: function() {
return this.store.find('chatroom');
}
});
приложение/маршруты/чатах/show.js
export default Ember.Route.extend({
model: function(params) {
return this.store.get('chatroom', params.chatroom_id);
},
actions: {
send: function() {
...
}
}
});
Можете ли вы поделиться кодом шаблона, в котором вы ссылаетесь на комнату? –
@BuckDoyle Я обновил свой вопрос. –