¿Cómo se verifica si una propiedad no está definida en qml?
Esto es lo que estoy tratando de hacer:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
¿Cómo se verifica si una propiedad no está definida en qml?
Esto es lo que estoy tratando de hacer:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
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 NULLen 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 siobjectno 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 latextvariable 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 comoif (text *is*)oif (text exists). Otra buena fuente: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Esta respuesta me da una advertencia.
Cambiar
texta en sumodelTextlugar arroja un error.Esto detiene la ejecución de Javascript para mí; es decir, la siguiente línea no se llama.
Vía Javascript
Lo mismo sucede al configurarlo a través de Javascript, pero es bastante detallado.
Utilizando
typeofEl
typeofoperador silencia el error y funciona como se esperaba.fuente
Para comparar con indefinido escribes
text === undefined. Esto se evaluará como falso sitextes asínull.Si desea verificar si el valor está presente (es decir, verificar ambos
undefinedynull), ú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, usevar textPresent = !!text(aunque doble!puede parecer confuso para uno que lee el código).fuente