У меня есть элемент списка в шаблоне, который использует «видимый» связывание, а также пользовательские привязки на тот же элемент:KnockoutJS - Комбинированные привязки переопределяют друг друг
<li data-bind="visible: (Applicable == 'All'), highlight: Selected().indexOf('false',0) == -1">
Это проверяет каждый связанный член зрения и если у него есть значение «Все» для свойства «Применимое», сделайте элемент списка видимым.
Я также использую настраиваемую привязку для применения класса к элементу списка, зависящему от того, содержит ли свойство «Selected» связанного элемента строка «false».
ko.bindingHandlers.highlight = {
update: function (element, valueAccessor, viewModel) {
var value = valueAccessor();
ko.utils.unwrapObservable(value) ? $(element).addClass("selected", 1000) : $(element).removeClass("selected", 1000);
}
};
Проблема заключается в том, что «изюминка» пользовательские привязки кажется переопределить/заменить видимые связывания и элементы списка, которые были скрыты от Visible связывания вновь появляется, когда гвоздь связывание происходит. Кажется, что видимое связывание выполняется, тогда привязка выделения выполняется и игнорирует результат видимой привязки.
Надеюсь, я объяснил это ОК.
Могу ли я объединить функциональность видимого связывания в мою собственную привязку, чтобы я вызывал только одно событие привязки, которое определяет, должен ли элемент списка быть видимым или скрытым или видимым плюс выделение?
Вы, безусловно, можете комбинировать два привязки, если вам нужно. Однако вам может быть полезно воспроизвести вашу проблему в jsFiddle. Вы можете использовать его: http://jsfiddle.net/rniemeyer/dJxRW/ –
Привет, Райан, я попытаюсь воспроизвести проблему в JS Fiddle, как вы предлагаете. Я думаю, для меня будет хорошо работать над проблемой. Честно говоря, я упростил пример, чтобы было легче написать вопрос, и ваша скрипка показала, что мой основной пример должен работать. Теперь я исправил скрипт, чтобы добавить в «maxPersonAge» вычисленный наблюдаемый, который возвращает максимальный возраст в 2 человека, и я хочу, чтобы тогда отображались только элементы списка, где свойство MaxAge меньше, чем maxPersonAge. Однако я уже получаю сообщение об ошибке: «Сообщение: ReferenceError: maxPersonAge не определено». – BrightonDev
Просто понял, как работает JSFiddle. URL-адрес моей измененной страницы: http://jsfiddle.net/FloatLeft/dJxRW/11/ – BrightonDev