# JS对象

在使用JS时,有一些更常用的对象和方法。 下面是它们中的一小部分:

  • Math.floor(v), Math.ceil(v), Math.round(v) - 获取此float值的最大、最小和四舍五入的值

  • Math.random() - 创建一个在0到1之间的随机数

  • Object.keys(o) - 从对象(包括 QObject)中获取键

  • JSON.parse(s), JSON.stringify(o) - 在JS对象与JSON字符串之间转换

  • Number.toFixed(p) - 固定精度的浮点数

  • Date - 日期操作

还可以在以下位置找到它们:JavaScript 参考(JavaScript reference) (opens new window)

这里有一些关于如何将JS与QML一起使用的小而有限的示例。 它们应该让人了解如何在QML中使用JS :

# 从QML项中打印出所有的键

Item {
    id: root
    Component.onCompleted: {
        var keys = Object.keys(root);
        for(var i=0; i<keys.length; i++) {
            var key = keys[i];
            // prints all properties, signals, functions from object
            console.log(key + ' : ' + root[key]);
        }
    }
}

# 将对象解析成JSON字符串和反解析

Item {
    property var obj: {
        key: 'value'
    }

    Component.onCompleted: {
        var data = JSON.stringify(obj);
        console.log(data);
        var obj = JSON.parse(data);
        console.log(obj.key); // > 'value'
    }
}

# 当前数据

Item {
    Timer {
        id: timeUpdater
        interval: 100
        running: true
        repeat: true
        onTriggered: {
            var d = new Date();
            console.log(d.getSeconds());
        }
    }
}

# 使用名称调用函数

Item {
    id: root

    function doIt() {
        console.log("doIt()")
    }

    Component.onCompleted: {
        // Call using function execution
        root["doIt"]();
        var fn = root["doIt"];
        // Call using JS call method (could pass in a custom this object and arguments)
        fn.call()
    }
}
最后更新: 2/1/2022, 6:02:16 PM