有一种可靠的方法可以从 QML/JavaScript 检查组件是否有信号?
目前我发现这段代码按预期工作:
if (myCustomComponent.myCustomSignal)
myCustomComponent.myCustomSignal();
myCustomComponent
甚至像这样简单:
Item {
id: root
signal myCustomSignal()
}
只有当myCustomComponent
有信号时,才会执行信号,但我不确定是否是正确的方式。
不,更可靠的方法应该是检查组件是否有信号:
if (typeof root.myCustomSignal !== 'undefined' && typeof root.myCustomSignal === 'function') { ... }
或
if (typeof root.myCustomSignal === 'function') { ... }
使用布尔值是不可行的。将示例目标项更改为:
Item {
id: root
property bool myCustomSignal: true
}
在这种情况下,您的条件将为真,您将尝试调用将导致崩溃的属性。这种方法不太容易出错,它确保信号存在并且是可调用的/函数。