Confused about <! - ko if: $parent.name == name → в нокауте js
Я столкнулся с этим кодом нокаута, и я смущен тем, что делает следующий код:
<!-- ko if: $parent.name == name -->
<a data-bind='text: name'></a>
<!-- /ko -->
Не следует ли интерпретировать этот код как комментарий?
Чтение документации:
http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html
это похоже на пользовательскую привязку?
Ответы
Ответ 1
Это условный комментарий нокаута. HTML внутри блока комментариев выполняется только в том случае, если код проверяет значение true. Нокаут может прочитать и обработать этот комментарий для вас. Вам не нужно ничего особенного делать. Просто поставьте условное выражение и убедитесь, что переменные, на которые вы ссылаетесь, фактически существуют. Затем откиньтесь и пусть нокаут сделает все остальное.
Ответ 2
Это не обычная привязка. Вы столкнулись с тем, что документация нокаута вызывает "виртуальный элемент", это привязка, применяемая к фрагменту кода вместо элемента. Если вы хотите условно оценить (т.е. Привязать к своей модели viewmodel) часть DOM, вы можете либо поместить ее в div с привязкой if
, либо помещать ее в такие комментарии.
Комментарии HTML являются частью DOM, поэтому ничего не остановить нокаут от их получения и интерпретации.