Jak sprawdzić, czy właściwość jest niezdefiniowana w qml?
Oto, co próbuję zrobić:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Jak sprawdzić, czy właściwość jest niezdefiniowana w qml?
Oto, co próbuję zrobić:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
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śliobject
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ć, żetext
zmienna używana do właściwości tekstu przycisku jest pobierana spoza zakresu. Będzie znacznie wyraźniej ztext: 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ć jakoif (text *is*)
lubif (text exists)
. Kolejne dobre źródło: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ta odpowiedź rzuca mi ostrzeżenie.
Zmiana
text
namodelText
zamiast powoduje błąd.To zatrzymuje dla mnie wykonanie Javascript; tzn. następna linia nie jest wywoływana.
Przez Javascript
To samo dzieje się podczas ustawiania go za pomocą Javascript, ale jest dość szczegółowe.
Za pomocą
typeof
W
typeof
wycisza operator błąd i działa zgodnie z oczekiwaniami.źródło
Aby porównać z niezdefiniowanym, piszesz
text === undefined
. Spowoduje to ocenę na fałsz, jeśli taktext
jestnull
.Jeśli chcesz sprawdzić, czy wartość jest obecna (tzn. Sprawdź oba
undefined
inull
), użyj jej jako warunku w instrukcji if lub operatorze potrójnym. Jeśli chcesz zapisać wynik porównania jako wartość logiczną, użyjvar textPresent = !!text
(chociaż podwójne!
może wydawać się mylące dla jednego czytającego kod).źródło