knockout js пользовательская привязка вызывается после рендеринга внутренних элементов dom

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

Я пробовал несколько способов: шаблон и привязки if с afterrender, и пользовательскую привязку, но из-за того, что содержимое в элементе использует foreach, все привязки, которые я пробовал, вызывают мой метод перед элементом dom, который прогон foreach отработал.

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

Любая помощь приветствуется.

1 ответ

Решение

Я не знаю ваш точный сценарий, но есть несколько способов, которые вы могли бы подойти к нему, кроме задержки (setTimeout) ваш код.

Одним из вариантов является использование ko.applyBindingsToDescendants(context, element) в вашей таможенной привязке. Это заставит запускаться все привязки для дочерних элементов этого элемента. Затем вы можете продолжить с кодом, который вы хотите запустить. Скорее всего, вы захотите поместить свою пользовательскую привязку в контейнер элемента, который имеет foreach,

Другой вариант будет иметь ваше пользовательское связывание также обрабатывать foreach, если вы имеете дело с тем же элементом. В этом случае вы можете позвонить ko.applyBindingsToNode(element, { foreach: someItems }, context) на вашем элементе, а затем перейти к вашему коду.

Другие вопросы по тегам