私の質問はこれとあれと非常に似て いますが、まったく同じではありません。
Meteorアプリケーションに次のテンプレートがあります。
<template name="items">
<div class="mainframe">
<h3>Available items:</h3>
<div class="items-table-container">
<table class="table table-hover">
<tbody>
{{#each all_items}}
{{> item}}
{{/each}}
</tbody>
</table>
</div>
</div>
<div class="btn-group">
<button id="create" class="btn">Create new item</button>
</div>
</template>
テンプレート関数は簡単です。
Template.items.all_items = function () {
return Items.find({}, {sort: {name: 1}}).fetch();
}
#create
新しいアイテムをItemsコレクションに挿入し、正常に機能するボタンにバインドされたイベントもあります。
ここで最も重要な部分はCSSです。
.items-table-container {
height:340px;
overflow-y: scroll;
}
したがって、基本的には、テーブルに固定サイズの領域内にスクロール可能なコンテンツを含める必要があります。問題は、あるブラウザでアイテムテーブルの内容を下にスクロールしてから、別のブラウザで新しいアイテムを追加すると始まります。最初のブラウザはアイテムのリストを更新し、コンテンツを一番上の位置にスクロールして戻します。
問題は、単一のテンプレートの自動更新を防ぐにはどうすればよいですか?この特定のケースでは、実際には従来のWebページの更新のようなものが必要だと思います。ユーザーが新しく追加されたアイテムをすぐに表示せず、ページをリロードした後で表示されれば問題ありません。
もう1つのアイデアは、スクロール可能なコンテンツの代わりに、ある種のページ付けを行うことです。それで問題は解決すると思いますが、もっと複雑になるので避けたいと思います。
理想的には、モデルが変更されたときではなく、リクエストによってMeteorにテンプレートを更新してほしいことをMeteorに伝えたいと思います。