在 QML 中 使用 Underscore.js
Underscore.js
underscore.js 無疑是個很棒的 library,但因為他會直接attach一個 _ 在 global 裡頭,因此在 QML 中是無法直接使用的。
我們在 QML 中要使用,目前的做法是把 加到 Qt 這個 global object 裡頭,變成 Qt. 來使用。 這樣就可以寫:
Item
{
enabled: Qt._.every([inptBoxIP, inptBoxUser, inptBoxPassword],
function f(e) {
return e.text !== ""
})
}
Library
https://github.com/diro/qml_underscorejs
Example
在實務開發上,常常會需要 connect signal,一般是使用 Connections 元件來做,但他做不到多個 Signals 連結到同一個 Slog,這邊我們利用 Underscore.js 來打造一個。
Util.js
Qt.include("underscore.js")
function connectSignals(signals, slot)
{
Qt._.each(signals, function f(s){s.connect(slot)});
}
example.qml
Component.onCompleted: {
Util.connectSignals([onWidthChanged, onHeightChanged], hideTips)
Util.connectSignals([btnLogin.onClicked, Keys.onEnterPressed, Keys.onReturnPressed],login)
Util.connectSignals([chkLocal.onClicked], setIPAddrToLocalhost)
}