Jawaban:
Mencoba:
text: text ? text : "default text"
"undefined"hanyalah representasi string dari referensi yang tidak merujuk apa pun, seperti None, atau NULLdalam 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 objecttidak terdefinisi. Mirip hack untuk C-style if (pointer) yang mengevaluasi false jika pointer memiliki nilai 0 (NULL). Perlu dicatat bahwa textvariabel 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 textke modelTextgantinya 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;
}
}
}
typeofThe typeofbisu 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 textada null.
Jika Anda ingin memeriksa apakah nilainya ada (yaitu, periksa keduanya undefineddan 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).