如果组件有信号,有一种可靠的方法可以检查QML / JavaScript吗?
目前我发现此代码按预期工作:
if (myCustomComponent.myCustomSignal)
myCustomComponent.myCustomSignal();
myCustomComponent
的地方就像这样简单:
Item {
id: root
signal myCustomSignal()
}
仅当myCustomComponent
有信号时才会执行该信号,但我不确定这是否正确。
答案 0 :(得分:-2)
不,更可靠的方法应该是检查组件是否有信号:
if (typeof root.myCustomSignal !== 'undefined' && typeof root.myCustomSignal === 'function') { ... }
或
if (typeof root.myCustomSignal === 'function') { ... }
使用布尔值是不可靠的。将您的样本目标项目更改为:
Item {
id: root
property bool myCustomSignal: true
}
在这种情况下,您的条件将成立,您将尝试调用将导致崩溃的属性。 这种方法不易出错,并确保信号存在且可调用/起作用。