2016-08-03 8 views
0

私はMeteorでチャットを構築しようとしています。しかし、私はページがロードされたとき、または新しいメッセージが送受信されたときに、メッセージの一部(画面の80%を占めるdiv)が最新のメッセージにスクロールするのに苦労していますメテオでオートスクロールするには?

私はhtml/jsでこれを行う様々な方法を見つけました。例えばこれは:

function scrollToBottom(){ 
    window.scrollTo(0, document.body.scrollHeight); 
} 
scrollToBottom(); 

しかし、これをMeteorアプリケーションに統合する方法はわかりません。私はこれをメッセージを送信する「クリック」イベントに入れ、メッセージをロードするヘルパーに入れようとしました。しかし、それは動作しませんでした。任意のヘルプは高く評価されています:)

+1

didあなたはチャットの火花のテンプレートからonRenderedイベントでそれをやろうとしますか? –

+0

良いアイデアは、私は、この 'Template.chat.onRendered(関数(){ this.autorun(()=> { 機能scrollToBottom(){ window.scrollToは(0、document.body.scrollHeight)を試みた。 } ( – janjackson

+1

)あなたのコードとUIはわかりませんが、チャットを含むdivではなくウィンドウをスクロールしてもよろしいですか?たぶんあなたのスクロールは機能していますが、体をスクロールするのではなく、特定の要素をスクロールしたいと思っています...ちょっと推測してください。また、コンテキスト内で反応しないデータで自動実行しています。 –

答えて

1

無限スクロールの場合alethes:pagesを使用することができます。 あなただけ定義する必要があります。

this.Pages = new Meteor.Pagination(YourCollectionName, { 
    debug: true, 
    availableSettings: { 
     limit: true, 
     sort: true, 
     filters: true, 
     settings: true 
    }, 
    templateName: "items", 
    infinite: true, 
    infiniteTrigger: .9, 
    infiniteRateLimit: 1, 
    infiniteStep: 1, 
    itemTemplate: "item", 
    pageSizeLimit: 1000, 
    perPage: 5, 
    maxSubscriptions: 500, 
    dataMargin: 30, 
    sort: { 
     created_at: 1 
    } 
}); 

を、テンプレート上だけで設定レンダリング:テンプレート内

Pages.set({ 
     filters: { 
      //Custom filters 
     } 
    }); 

<template name="items"> 
    <div class="chat-discussion"> 
     {{> pagesNav}} 
     {{> pages}} 
    </div> 
</template> 
ます。また、このようなあなたのITMのテンプレートを定義する必要があり

<template name="item"> 
    //You can write you item (message body) here 
</template> 
+0

私はむしろ流星に新しいです私はこれがどこにあるのかわかります。ページは行く必要がありますか?また、これでdivをスクロールできますか? – janjackson

+0

スキーマ/コレクションを定義したCollectionsディレクトリ内に配置できます。 – sapna

関連する問題