1、无状态的JavaScript库:
一些JavaScript文件的行为更像库文件,它们提供了一组无状态的辅助函数来提供输入和计算输出,但是从来不直接
操作QML组件实例。若每一个QML组件实例都有一个这些库的拷贝就会造成浪费,可以使用pragma来指明一个特定的文件
是一个没有状态的库:
.pragma library //必须在所有JavaScript代码前
function factoral(a){
a = parseInt(a);
if(a <= 0){
return 1;
}else{
return a * factorial(a - 1); //此处不能用arguments.callee(a - 1)
}
}
2、如果一个JavaScript文件需要使用定义在其他JavaScript文件中的函数,可用Qt.include()函数来导入其他文件
中的所有函数到当前文件的命名空间中。
eg:
//factorial.js
import QtQuick 2.3
import "script.js" as MyScript
Item{
width: 100; height: 100
MouseArea{
anchors.fill: parent
onClicked: {
MyScript.showCalculations(10)
console.log("Call factorial() from QML: ", MyScript.factorial(10))
}
}
}
//script.js