Ответ 1
Мой коллега фактически решил эту последнюю ночь, используя то, с чем мы играли, прежде чем я пошел домой.
Таким образом, вся "проблема" с событиями "afterRender", "afterAdd" и "beforeRemove" заключается в том, что они действуют по-разному в сочетании с привязкой "foreach". KnockoutJS достаточно хорош, чтобы рассказать вам об этом на странице , но по какой-то причине он фактически не погрузился в меня, пока я не увидел его на практике,
Что действительно работает, так это обрезать всю привязку "foreach" и использовать встроенные "данные" Knockout следующим образом:
data-bind="template: { name: 'item-template', data: items, afterRender: caller }"
Затем "afterRender" работает точно так же, как следует из названия.
У меня создалось впечатление, что вы не можете повторять сбор и визуализацию нового пользовательского интерфейса без foreach, но эти примеры иллюстрируют, что он действительно работает.
-
http://jsfiddle.net/farina/kuFx2/1/ (с использованием стиля объекта array ViewModel)
-
http://jsfiddle.net/farina/QtZm2/1/ (с использованием стиля функции ViewModel)
Я сделал пример для обоих стилей ViewModel, потому что мне иногда нужен тот или другой.
Спасибо за помощь Дэн!!