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 None
ou NULL
dans 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 object
n'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 text
variable 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 modelText
place 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;
}
}
}
typeof
L' typeof
opé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 text
c'est le cas null
.
Si vous voulez vérifier si la valeur est présente (c'est-à-dire vérifier les deux undefined
et 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).