167 votes

Est-il possible de lier les données visible à la négation (" ! ») d’une propriété booléenne du ViewModel ?

Je voudrais utiliser une propriété sur mon ViewModel pour alterner les icône à afficher sans créer une propriété calculée séparée de l’inverse. Est-ce possible ?

Mon ViewModel a une périodes de propriété qui est un tableau du mois, comme ceci :

287voto

RP Niemeyer Points 81663

Lorsque vous utilisez une observable dans une expression, vous avez besoin d’y accéder en fonction comme :

``

53voto

Dave Points 421

Je suis d'accord avec Jean-Papa du commentaire qu'il devrait y avoir un haut- hidden de la liaison. Il y a deux avantages à un dédié hidden de liaison:

  1. Syntaxe plus simple, c'est à dire. hidden: charted au lieu de visible: !charted().
  2. Moins de ressources, depuis knock-out peut observer les observables charted directement, plutôt que de créer un computed d'observer !charted().

Il est assez simple de créer un hidden de liaison, même si, comme ceci:

ko.bindingHandlers.hidden = {
  update: function(element, valueAccessor) {
    ko.bindingHandlers.visible.update(element, function() {
      return !ko.utils.unwrapObservable(valueAccessor());
    });
  }
};

Vous pouvez l'utiliser comme le haut- visible de liaison:

<i class="icon-search" data-bind="hidden: charted, click: $parent.pie_it"></i>
<i class="icon-remove" data-bind="visible: charted, click: $parent.pie_it"></i>

10voto

KhanSharp Points 1754

C’est peu déroutant, que vous avez à faire

alors, j’ai fait

mon modèle est

vérifier en violon http://jsfiddle.net/khanSharp/bgdbm/

4voto

Michael Best Points 9033

Vous pouvez utiliser ma liaison boîtier/commutateur , qui comprend et .

Vous pourriez également avoir comme

1voto

Yogev Smila Points 31

Afin de faire la liaison au courant des modifications apportées à la propriété, j’ai copié le gestionnaire de liaison de visible et inversé il :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X