web-dev-qa-db-fra.com

Knockout.js "if Binding" sur plusieurs booléens

Est-il possible d'utiliser Knockout's si contraignant sur plusieurs booléens?

Tel que

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

J'ai essayé de nombreuses syntaxes différentes, mais je n'arrive pas à trouver la bonne syntaxe. Je ne suis pas sûr que ce soit même possible.

35
Brad Bamford

Lorsque Knockout traite vos liaisons, il évalue d'abord votre expression.

Si l'expression aboutit à un observable, il évalue alors l'observable comme une commodité pour obtenir la valeur finale sur laquelle le if: fonctionne.

Donc, les deux suivants fonctionnent de manière identique

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

Une fois que vous quittez le monde des expressions simples se terminant par un observable, vous voulez probablement aussi laisser le sucre derrière vous et toujours évaluer les observables vous-même (pour raison si ce n'est autre chose).

Essayez ce qui suit

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

Vous pouvez - la liaison if prend juste une expression arbitraire. Lorsque vous faites plus que simplement référencer la valeur d'un observable comme ça, vous devrez en fait appeler l'observable comme ceci:

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

Voici un travail jsfiddle .

5
daedalus28