La liaison de données dans javafx est-elle uniquement possible pendant la déclaration de variable?

StackOverflow https://stackoverflow.com/questions/1047785

  •  20-08-2019
  •  | 
  •  

Question

Lors de la lecture des tutoriels et des exemples javafx, les liaisons sont toujours établies lors des déclarations varibale:

def y = bind x;

ou

def address = Address {
  street: bind myStreet;
};

Mais que faire si j'ai un objet existant - et donc ne le déclare pas - et que je veux lier l'un de ses attributs. Dans mon cas, je charge un SVGPath avec FXDLoader, puis je veux lier SVGPath.visible à une variable. Comment puis-je y parvenir?

var data = true;
var fxdContent = FXDLoader.load("{__DIR__}plan.fxz");
var sc = fxdContent.lookup("SC0013") as SVGPath;
sc.visible = bind data; //That doesn't work
Était-ce utile?

La solution

Vous pouvez utiliser un déclencheur de remplacement à la place, par exemple.

var fxdContent = FXDLoader.load("{__DIR__}plan.fxz");
var sc = fxdContent.lookup("SC0013") as SVGPath;
var data = true on replace {
    sc.visible = data;
}

Vous pourriez aussi être capable de faire:

def data = bind sc.visible with inverse;

Ceci vous donnerait des mises à jour bidirectionnelles entre les deux variables. Selon la spécification de langue , vous ne pouvez pas utilisez " bind " n'importe où ailleurs.

Autres conseils

Oui, vous ne pouvez lier une variable que lorsque vous la déclarez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top