Respuestas:
Tratar:
text: text ? text : "default text"
"undefined"
es solo una representación de cadena de una referencia que no hace referencia a nada, al igual que None
, o NULL
en otros idiomas.
===
es un operador de comparación estricto, es posible que desee leer este hilo: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
para ser exacto. if (object)
se evalúa como falso si object
no está definido. Hack similar al estilo C if (puntero) que se evalúa como falso si el puntero tiene un valor de 0 (NULL). Vale la pena señalar que la text
variable utilizada para la propiedad de texto de un botón se toma desde fuera del alcance. Será mucho más claro con: text: inText ? inText : "default text"
oif(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
¿es esto exacto?
if (text is true)
. Me resulta más fácil pensar como if (text *is*)
o if (text exists)
. Otra buena fuente: 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"
}
Esta respuesta me da una advertencia.
QML Button: Binding loop detected for property "text"
Cambiar text
a en su modelText
lugar arroja un error.
ReferenceError: modelText is not defined
Esto detiene la ejecución de Javascript para mí; es decir, la siguiente línea no se llama.
Lo mismo sucede al configurarlo a través de Javascript, pero es bastante detallado.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeof
El typeof
operador silencia el error y funciona como se esperaba.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}
Para comparar con indefinido escribes text === undefined
. Esto se evaluará como falso si text
es así null
.
Si desea verificar si el valor está presente (es decir, verificar ambos undefined
y null
), úselo como condición en la declaración if o el operador ternario. Si necesita almacenar el resultado de la comparación como un valor booleano, use var textPresent = !!text
(aunque doble !
puede parecer confuso para uno que lee el código).