Réponses:
Essayer:
text: text ? text : "default text"
"undefined"est juste une représentation sous forme de chaîne d'une référence qui ne fait référence à rien, comme Noneou NULLdans d'autres langues.
===est un opérateur de comparaison strict, vous voudrez peut-être lire ce fil: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}pour être exact. if (object)est évalué à faux si objectn'est pas défini. Piratage similaire au style C if (pointeur) qui est évalué à faux si le pointeur a une valeur de 0 (NULL). Il convient de noter que la textvariable utilisée pour la propriété de texte d'un bouton est prise hors de la portée. Ce sera beaucoup plus clair avec text: inText ? inText : "default text"if(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}- est-ce exact?
if (text is true). Je trouve plus facile de penser comme if (text *is*)ou if (text exists). Une autre bonne source: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: text ? text : "default text"
}
Cette réponse lance un avertissement pour moi.
QML Button: Binding loop detected for property "text"
Changer textà la modelTextplace génère une erreur.
ReferenceError: modelText is not defined
Cela arrête l'exécution de Javascript pour moi; c'est-à-dire que la ligne suivante n'est pas appelée.
La même chose se produit lors de la configuration via Javascript, mais est assez verbeuse.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeofL' typeofopérateur coupe le son de l'erreur et fonctionne comme prévu.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}
Pour comparer avec undefined vous écrivez text === undefined. Cela sera évalué à faux si textc'est le cas null.
Si vous voulez vérifier si la valeur est présente (c'est-à-dire vérifier les deux undefinedet null), utilisez-la comme condition dans l'instruction if ou l'opérateur ternaire. Si vous avez besoin de stocker le résultat de la comparaison en tant que valeur booléenne, utilisez var textPresent = !!text(même si le double !peut sembler déroutant pour celui qui lit le code).