Jawaban:
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 jika object
tidak terdefinisi. Mirip hack untuk C-style if (pointer) yang mengevaluasi false jika pointer memiliki nilai 0 (NULL). Perlu dicatat bahwa text
variabel yang digunakan untuk properti teks tombol diambil dari luar lingkup. Ini akan menjadi lebih jelas dengan text: 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 sebagai if (text *is*)
atau if (text exists)
. Sumber lain yang bagus: 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"
}
Jawaban ini memberi peringatan bagi saya.
QML Button: Binding loop detected for property "text"
Mengubah text
ke modelText
gantinya melempar kesalahan.
ReferenceError: modelText is not defined
Ini menghentikan eksekusi Javascript untuk saya; yaitu baris berikutnya tidak dipanggil.
Hal yang sama terjadi ketika mengaturnya melalui Javascript, tetapi cukup verbose.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeof
The typeof
bisu operator kesalahan dan bekerja seperti yang diharapkan.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}
Untuk membandingkan dengan undefined yang Anda tulis text === undefined
. Ini akan bernilai false jika text
ada null
.
Jika Anda ingin memeriksa apakah nilainya ada (yaitu, periksa keduanya undefined
dan null
), gunakan itu sebagai ketentuan dalam pernyataan if atau operator ternary. Jika Anda perlu menyimpan hasil perbandingan sebagai nilai boolean, gunakan var textPresent = !!text
(meskipun ganda !
mungkin tampak membingungkan untuk satu yang membaca kode).