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 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 si objectno 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 textvariable 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 texta en su modelTextlugar 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;
}
}
}
typeofEl typeofoperador 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 textes así null.
Si desea verificar si el valor está presente (es decir, verificar ambos undefinedy 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).