回答:
試してください:
text: text ? text : "default text"
"undefined"
は、のようにNone
、またはNULL
他の言語で、何も参照しない参照の単なる文字列表現です。
===
厳密な比較演算子です。次のスレッドを読むことをお勧めします。https://stackoverflow.com/questions/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
正確に言うと。が未定義のif (object)
場合、falseと評価されますobject
。ポインターの値が0(NULL)である場合にfalseと評価されるCスタイルのif(pointer)と同様のハック。text
ボタンのテキストプロパティに使用される変数は、スコープ外から取得されることに注意してください。これは、とより明確になるでしょう:text: inText ? inText : "default text"
、またはif(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
はこのように読み取られます- これは正確ですか?
if (text is true)
です。if (text *is*)
またはとして考える方が簡単if (text exists)
です。もう一つの良いソース: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"
}
この答えは私に警告を投げます。
QML Button: Binding loop detected for property "text"
代わりにに変更text
するとmodelText
、エラーがスローされます。
ReferenceError: modelText is not defined
これにより、Javascriptの実行が停止します。つまり、次の行は呼び出されません。
Javascriptで設定する場合も同じことが起こりますが、非常に冗長です。
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeof
typeof
オペレーターのミュートエラーと期待通りに動作します。
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}