Jak zapobiec przewijaniu treści, gdy Meteor aktualizuje kolekcję

Moje pytanie jest bardzo podobne doten iten ale nie dokładnie to samo.

Mam następujący szablon w mojej aplikacji 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>

Funkcja szablonu jest trywialna:

Template.items.all_items = function () {
    return Items.find({}, {sort: {name: 1}}).fetch();
}

Istnieje również wydarzenie związane z#create przycisk, który wstawia nowy element do kolekcji elementów i działa dobrze.

Teraz najważniejszą częścią jest CSS:

.items-table-container {
    height:340px;
    overflow-y: scroll;
}

Zasadniczo chcę, aby mój stół miał przewijalną zawartość w obszarze o stałym rozmiarze. Problem zaczyna się, gdy przewijam zawartość tabeli elementów w jednej przeglądarce, a następnie w innej przeglądarce dodaję nowy element. Pierwsza przeglądarka aktualizuje listę elementów i przewija zawartość z powrotem do najwyższej pozycji.

Pytanie brzmi: jak mogę zapobiec automatycznej aktualizacji dla jednego szablonu? Myślę, że w tym konkretnym przypadku rzeczywiście potrzebuję czegoś w rodzaju tradycyjnej aktualizacji strony internetowej: to dobrze, jeśli użytkownik nie widzi nowo dodanego elementu natychmiast, ale raczej po ponownym załadowaniu strony.

Innym pomysłem jest wykonanie stronicowania zamiast przewijalnej zawartości. Myślę, że to rozwiązałoby problem, ale byłoby to znacznie bardziej skomplikowane i chciałbym tego uniknąć.

Myślę, że idealnie chciałbym móc powiedzieć Meteorowi, że chcę, aby Meteor aktualizował szablon nie wtedy, gdy model się zmienia, ale raczej na podstawie żądania.

questionAnswers(4)

yourAnswerToTheQuestion