Я пытаюсь указать входной эффект на вставленные элементы, используя привязку knockoutjs foreach. Очень простая настройка:
myViewModel.myObservableArray.push({enter:function() { ... });
и в разметке:
foreach:{data:myObservableArray, afterRender:enter}
похоже, что он должен работать... правильно? Но он не находит функцию ввода в элементе. То, что я нашел, работает:
myViewModel.enter = function(something, item) { item.enter(); };
foreach:{data:myObservableArray, afterRender:$root.enter}
добавление функции ввода в модель корневого представления и привязка afterRender
к $root.enter. Затем Enter передает элемент как свой второй параметр, поэтому он может в свою очередь вызвать функцию ввода элемента, но он чувствует себя как взлома.
Может ли кто-нибудь объяснить, что здесь происходит?
Спасибо.
EDIT:
Чтобы уточнить, я создал fiddle.
Это очень просто и более подробно описано в анимированном переходе. Он запускает функцию в модели корневого представления для каждого элемента dom, который вставлен с использованием привязки foreach.
Итак, вопрос в том, что, если мне нужны функции itemRender, afterAd или beforeRemove? Я мог видеть, что это полезно. Особенно, если использовать привязку шаблона для динамического выбора шаблона (примечание 4). Есть ли чистый способ сделать это? Прямо сейчас у меня есть функция enter
в корне модели представления, которая просто вызывает функцию enter
на элементе, но, как я уже сказал выше, это похоже на взлом.