Odpowiedzi:
Próbować:
text: text ? text : "default text"
"undefined"
jest tylko reprezentacja ciąg odniesienie nie przedstawieniu niczego, podobnie jak None
, lub NULL
w innych językach.
===
jest ścisłym operatorem porównania, możesz przeczytać ten wątek: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
byc dokładnym. if (object)
zwraca wartość false, jeśli object
jest niezdefiniowany. Podobny hack do stylu C if (wskaźnik), który zwraca wartość false, jeśli wskaźnik ma wartość 0 (NULL). Warto zauważyć, że text
zmienna używana do właściwości tekstu przycisku jest pobierana spoza zakresu. Będzie znacznie wyraźniej z text: inText ? inText : "default text"
if(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
- czy to jest dokładne?
if (text is true)
. Łatwiej jest mi myśleć jako if (text *is*)
lub if (text exists)
. Kolejne dobre źródło: 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"
}
Ta odpowiedź rzuca mi ostrzeżenie.
QML Button: Binding loop detected for property "text"
Zmiana text
na modelText
zamiast powoduje błąd.
ReferenceError: modelText is not defined
To zatrzymuje dla mnie wykonanie Javascript; tzn. następna linia nie jest wywoływana.
To samo dzieje się podczas ustawiania go za pomocą Javascript, ale jest dość szczegółowe.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeof
W typeof
wycisza operator błąd i działa zgodnie z oczekiwaniami.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}
Aby porównać z niezdefiniowanym, piszesz text === undefined
. Spowoduje to ocenę na fałsz, jeśli tak text
jest null
.
Jeśli chcesz sprawdzić, czy wartość jest obecna (tzn. Sprawdź oba undefined
i null
), użyj jej jako warunku w instrukcji if lub operatorze potrójnym. Jeśli chcesz zapisać wynik porównania jako wartość logiczną, użyj var textPresent = !!text
(chociaż podwójne !
może wydawać się mylące dla jednego czytającego kod).