Подтвердить что ты не робот

Knockout.js "если привязка" на несколько булевых

Можно ли использовать Knockout при привязке к нескольким логическим?

Например,

<div data-bind="if: (property.aTrueValue && property.anotherTrueValue)">...

Я пробовал много разных синтаксисов, но не могу найти правильный синтаксис. Я не уверен, что это возможно.

4b9b3361

Ответ 1

Когда Knockout обрабатывает ваши привязки, он сначала оценивает ваше выражение.

Если выражение приводит к наблюдаемому, оно затем оценивает наблюдаемое как удобство для получения окончательного значения, которое работает if:

Итак, две следующие работы тождественно

<div data-bind="if: foo"></div>
<div data-bind="if: foo()"></div>

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

Попробуйте выполнить

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...

Ответ 2

Вы можете - привязка if принимает произвольное выражение. Когда вы делаете больше, чем просто ссылаетесь на значение наблюдаемого, подобное этому, вам нужно фактически вызвать наблюдаемое так:

<div data-bind="if: (property.aTrueValue() && property.anotherTrueValue())">...

Здесь работает jsfiddle.