I'm building an ember app with email like messaging.
When a user is sending a message the container should scroll to the bottom to show the new message. Here's the action that creates the new message
createMessage(messageParams) {
this.get('store').createRecord('message', messageParams).save()
.then(() => {
return this.refresh()
})
.then(() => {
let objDiv = document.getElementById("message-container");
objDiv.scrollTop = objDiv.scrollHeight;
})
.catch(() => {
this.get('flashMessages')
.danger('There was a problem. Please try again.');
});
As of now the chat box does not scroll to the bottom when the new message appears in the container. It works when I wrap the code in the second .then
in a set timeout.
Should I put the code that scrolls the container to the bottom somewhere else in route file? I tried putting it in the afterModel hook. I also tried putting it in a .then
after the model hook. When I did that, I got a blank white page when navigating to the route in the app.
model(params) {
return Ember.RSVP.hash({
messages: this.get('store').query('message', {
id: params.conversation_id
}),
conversation: this.get('store').find('conversation', params.conversation_id)
}).then(() => {
let objDiv = document.getElementById("message-container");
objDiv.scrollTop = objDiv.scrollHeight;
});
}
Aucun commentaire:
Enregistrer un commentaire