Подтвердить что ты не робот

Событие привязки KnockoutJS после преобразования шаблона

Я искал какое-то время, и я уверен, что это новый вопрос, а не повторение, как говорится в заголовке.:)

В основном, я пытаюсь выяснить, есть ли событие, способное подписываться, которое KnockoutJS создает после визуализации шаблона при использовании чего-то вроде шаблонов jQuery.

Я бы использовал встроенный "afterRender", но обнаружил, что он не срабатывает, если наблюдаемый массив очищается. Я построил эту демонстрацию, чтобы проиллюстрировать эту проблему: http://jsfiddle.net/farina/YWfV8/1/.

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

Мне просто нужно одно событие, которое срабатывает после завершения рисования шаблона.

4b9b3361

Ответ 1

Мой коллега фактически решил эту последнюю ночь, используя то, с чем мы играли, прежде чем я пошел домой.

Таким образом, вся "проблема" с событиями "afterRender", "afterAdd" и "beforeRemove" заключается в том, что они действуют по-разному в сочетании с привязкой "foreach". KnockoutJS достаточно хорош, чтобы рассказать вам об этом на странице , но по какой-то причине он фактически не погрузился в меня, пока я не увидел его на практике,

Что действительно работает, так это обрезать всю привязку "foreach" и использовать встроенные "данные" Knockout следующим образом:

data-bind="template: { name: 'item-template', data: items, afterRender: caller }"

Затем "afterRender" работает точно так же, как следует из названия.

У меня создалось впечатление, что вы не можете повторять сбор и визуализацию нового пользовательского интерфейса без foreach, но эти примеры иллюстрируют, что он действительно работает.

Я сделал пример для обоих стилей ViewModel, потому что мне иногда нужен тот или другой.

Спасибо за помощь Дэн!!

Ответ 2

Является ли beforeRemove тем, что вы ищете? Я не уверен, какое поведение вы хотите достичь. Пожалуйста, проверьте этот образец: http://jsfiddle.net/romanych/YWfV8/8/ Это то, что вы хотите или нет?