Условное связывание 'click' с нокаутом
Я привязываю событие click к каждому элементу списка в списке:
<ul class="modal-subject-list" data-bind="foreach: filteredSubjects">
<li data-bind="click: $parent.pickSubject, css: {alreadyAddedBackground: hasBeenAdded}">
<!-- Lots of code here -->
</li>
</ul>
Я хочу отключить привязку click:
, если "hasBeenAdded" разрешает true. Я знаю некоторые грязные способы позаботиться об этом:
- Есть два элемента списка: один для
if: hasBeenAdded
, а другой для if: !hasBeenAdded
. Это далеко от DRY
- Обработайте эту проверку с помощью javascript и оставите представление в одиночку. Мне это не нравится, потому что создается ненужная разметка для элементов списка, которые должны быть существенно отключены.
Есть ли способ зарегистрировать привязку "clickIf"?
Ответы
Ответ 1
Сделайте это
<ul class="modal-subject-list" data-bind="foreach: filteredSubjects">
<li data-bind="click: hasBeenAdded ? null : $parent.pickSubject">
<!-- Lots of code here -->
</li>
</ul>
http://jsfiddle.net/7hcj6/
Чтение -
Если файл filterSubject добавлен, ничего не делать, иначе добавьте его в список или что-то еще.