Ano*_*non 15 programming application-development qml ubuntu-sdk
你如何检查一个属性是否在 qml 中未定义?
这就是我想要做的:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Run Code Online (Sandbox Code Playgroud)
Kis*_*iel 12
尝试:
text: text ? text : "default text"
"undefined"
只是一个引用的字符串表示,不引用任何东西,就像None
, 或NULL
其他语言一样。
===
是严格的比较运算符,您可能需要阅读此线程:https : //stackoverflow.com/questions/523643/difference-between-and-in-javascript
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: text ? text : "default text"
}
Run Code Online (Sandbox Code Playgroud)
这个答案对我发出警告。
QML Button: Binding loop detected for property "text"
Run Code Online (Sandbox Code Playgroud)
更改text
到modelText
,而不是抛出一个错误。
ReferenceError: modelText is not defined
Run Code Online (Sandbox Code Playgroud)
这会为我停止 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
34168 次 |
最近记录: |