Odpowiedzi:
Próbować:
text: text ? text : "default text"
"undefined"jest tylko reprezentacja ciąg odniesienie nie przedstawieniu niczego, podobnie jak None, lub NULLw 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 objectjest 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 textzmienna 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 textna modelTextzamiast 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;
}
}
}
typeofW typeofwycisza 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 textjest null.
Jeśli chcesz sprawdzić, czy wartość jest obecna (tzn. Sprawdź oba undefinedi 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).