Confused about <! - ko if: $parent.name == name &#8594; в нокауте js - программирование
Подтвердить что ты не робот

Confused about <! - ko if: $parent.name == name &#8594; в нокауте js

Я столкнулся с этим кодом нокаута, и я смущен тем, что делает следующий код:

   <!-- ko if: $parent.name == name -->
   <a data-bind='text: name'></a> 
   <!-- /ko -->

Не следует ли интерпретировать этот код как комментарий?

Чтение документации:
http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html
это похоже на пользовательскую привязку?

4b9b3361

Ответ 1

Это условный комментарий нокаута. HTML внутри блока комментариев выполняется только в том случае, если код проверяет значение true. Нокаут может прочитать и обработать этот комментарий для вас. Вам не нужно ничего особенного делать. Просто поставьте условное выражение и убедитесь, что переменные, на которые вы ссылаетесь, фактически существуют. Затем откиньтесь и пусть нокаут сделает все остальное.

Ответ 2

Это не обычная привязка. Вы столкнулись с тем, что документация нокаута вызывает "виртуальный элемент", это привязка, применяемая к фрагменту кода вместо элемента. Если вы хотите условно оценить (т.е. Привязать к своей модели viewmodel) часть DOM, вы можете либо поместить ее в div с привязкой if, либо помещать ее в такие комментарии.

Комментарии HTML являются частью DOM, поэтому ничего не остановить нокаут от их получения и интерпретации.