vuejsでは、2人のユーザー間で会話チャットを作成しています。私はチャットコンポーネントは、チャットの構造(ブートストラップでパネルを)持っているこのデータがレンダリングされると、Vuejsイベントが発生する
Chat
->ChatLog
-> ChatMessage
->ChatComposer
のようなコンポーネントを入れ子にしていると私はAxiosで取得どこにもそのページは、データベースから、すべてのメッセージをロードされたときに、です。
axios
.get('/conversation/'+this.conversation.id+'/message')
.then((response) => {
this.messages = response.data;
this.manageHeightChat();
this.scrollToEnd();
});
そして、ときに私はすべてのメッセージを取得し、私はChatMessage
コンポーネントに各メッセージをディスパッチChatLog
コンポーネント
<chat-message v-for="message in messages" v-bind:message="message" v-bind:user="user"></chat-message>
にそれらを派遣。
したがって、すべてのメッセージでコールバックメソッドが呼び出されると、それらは他のコンポーネントにディスパッチされ、次に2つのメソッドmanageHeightChat
とscrollToEnd
が呼び出されます。
scrollToEnd() {
var container = this.$refs.chatlog;
container.scrollTop = container.scrollHeight;
console.log(container.scrollHeight);
}
問題は、メッセージがChatLog
とChatMessage
によってレンダリングされる前に、最後の方法(scrollToEnd
が)のでcontainer.scrollHeight
は良い大きさではないと呼ばれているということです。それを確認するために
私のようなものを追加しました:
setTimeout(function() {
this.scrollToEnd();
}.bind(this), 1000);
そして、すべてが正常に働いていたが。
チャットにコンテンツがレンダリングされ、私がscrollToEnd
メソッドを呼び出すことができるようにするには、どのようにイベントを入れますか?
ありがとうございます!それはまさにそれです! :) – dib258