Bagaimana Anda memeriksa apakah sebuah properti tidak terdefinisi dalam qml?
Inilah yang saya coba lakukan:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Bagaimana Anda memeriksa apakah sebuah properti tidak terdefinisi dalam qml?
Inilah yang saya coba lakukan:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Mencoba:
text: text ? text : "default text"
"undefined"
hanyalah representasi string dari referensi yang tidak merujuk apa pun, seperti None
, atau NULL
dalam bahasa lain.
===
adalah operator perbandingan yang ketat, Anda mungkin ingin membaca utas ini: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
tepatnya.if (object)
bernilai false jikaobject
tidak terdefinisi. Mirip hack untuk C-style if (pointer) yang mengevaluasi false jika pointer memiliki nilai 0 (NULL). Perlu dicatat bahwatext
variabel yang digunakan untuk properti teks tombol diambil dari luar lingkup. Ini akan menjadi lebih jelas dengantext: inText ? inText : "default text"
if(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
- apakah ini akurat?if (text is true)
. Saya merasa lebih mudah untuk berpikir sebagaiif (text *is*)
atauif (text exists)
. Sumber lain yang bagus: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Jawaban ini memberi peringatan bagi saya.
Mengubah
text
kemodelText
gantinya melempar kesalahan.Ini menghentikan eksekusi Javascript untuk saya; yaitu baris berikutnya tidak dipanggil.
Melalui Javascript
Hal yang sama terjadi ketika mengaturnya melalui Javascript, tetapi cukup verbose.
Menggunakan
typeof
The
typeof
bisu operator kesalahan dan bekerja seperti yang diharapkan.sumber
Untuk membandingkan dengan undefined yang Anda tulis
text === undefined
. Ini akan bernilai false jikatext
adanull
.Jika Anda ingin memeriksa apakah nilainya ada (yaitu, periksa keduanya
undefined
dannull
), gunakan itu sebagai ketentuan dalam pernyataan if atau operator ternary. Jika Anda perlu menyimpan hasil perbandingan sebagai nilai boolean, gunakanvar textPresent = !!text
(meskipun ganda!
mungkin tampak membingungkan untuk satu yang membaca kode).sumber