Answers:
尝试:
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)
如果object
未定义,则结果为false 。类似C语言的if(pointer)风格,如果指针的值为0(NULL),则评估为false。值得注意的是,text
用于按钮的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;
}
}
}