Ractive рендеринг при изменении останавливает jquery slideDown

Я использую Ractive для отображения списка сообщений, например:

<ul  class="collapsible">
    {{#each messages}}
    <li>
        <div class="collapsible-header" on-click="readNotification">{{#if read}}<span>{{title}}</span>{{else}}<strong>{{title}}</strong>{{/if}}</div>
        <div class="collapsible-body">
            <p>{{body}}</p>
        </div>
    </li>
    {{/each}}
</ul>

Нет проблем, но когда элемент списка щелкнут, он должен открыться, и я поставлю сообщение как прочитанное. Это запускает Ractive для повторного рендеринга этого узла, предотвращая его открытие.

Как с этим лучше всего справиться?

EDIT: Данные в ractive обновляются этим обратным вызовом, который прослушивает событие child_changed из Firebase. Затем я устанавливаю обновленный объект в его положение индекса в ractive объекте. ractive, вероятно, видит в этом новый объект, а не обновленный?

this.firebase.child(collectionKey).on('child_changed', function(snapshot) {
    var collectionKey = snapshot.ref().parent().key();
    var obj = snapshot.val();
    var key = snapshot.key();
    var index = app.ractive.get(collectionKey).map(function(item) { 
        return item._firebaseKey;
    }).indexOf(key);
    app.ractive.set(collectionKey+'.'+index, obj);
});

person Edward    schedule 08.11.2015    source источник
comment
Это не должно быть повторный рендеринг узла... можете ли вы предоставить работающую демонстрацию? Возможно, лучше использовать github.com/ractivejs/ractive-transitions-slide.   -  person Rich Harris    schedule 08.11.2015
comment
@RichHarris спасибо за быстрый ответ и всю работу, которую вы проделали, чтобы сделать эту библиотеку интуитивно понятной. Мне потребовалось бы слишком много времени, чтобы предоставить вам рабочую версию, но мне не хватало важной информации. Код, который обновил данные. Надеюсь, вы сможете помочь мне с этим редактированием.   -  person Edward    schedule 09.11.2015


Ответы (1)


Я решил это несколько дней назад, создав правильный «Декоратор». Я считаю, что реализация Decorators более надежна, чем запуск кода jQuery в DOM путем просмотра событий изменения из Ractive.

Декораторы легко создавать, проверьте: http://docs.ractivejs.org/latest/writing-decorator-plugins

person Edward    schedule 24.11.2015