La liaison de données dans javafx est-elle uniquement possible pendant la déclaration de variable?
-
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
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.