knockout js пользовательская привязка вызывается после рендеринга внутренних элементов dom
Я не уверен, что делаю это совершенно неправильно! Но я хотел бы иметь возможность вызывать пользовательскую привязку для элемента после того, как весь код внутри него был выполнен.
Я пробовал несколько способов: шаблон и привязки if с afterrender, и пользовательскую привязку, но из-за того, что содержимое в элементе использует foreach, все привязки, которые я пробовал, вызывают мой метод перед элементом dom, который прогон foreach отработал.
Единственный вариант, о котором я могу подумать, - это задержать вызов моих методов на долю секунды, но это выглядит немного странно.
Любая помощь приветствуется.
1 ответ
Я не знаю ваш точный сценарий, но есть несколько способов, которые вы могли бы подойти к нему, кроме задержки (setTimeout
) ваш код.
Одним из вариантов является использование ko.applyBindingsToDescendants(context, element)
в вашей таможенной привязке. Это заставит запускаться все привязки для дочерних элементов этого элемента. Затем вы можете продолжить с кодом, который вы хотите запустить. Скорее всего, вы захотите поместить свою пользовательскую привязку в контейнер элемента, который имеет foreach
,
Другой вариант будет иметь ваше пользовательское связывание также обрабатывать foreach
, если вы имеете дело с тем же элементом. В этом случае вы можете позвонить ko.applyBindingsToNode(element, { foreach: someItems }, context)
на вашем элементе, а затем перейти к вашему коду.