4

有没有办法检查存在和访问 QML/javascript 中动态创建的对象(不使用 C++)?

我正在尝试创建一个具有类似于地图的界面的应用程序 - 给定一个键和一个对象,我的应用程序必须找到具有该键的对象是否存在并用新对象覆盖。如果没有,应用程序必须创建一个新对象并与密钥关联。

文档说动态管理的对象没有 ID,我发现访问它们的唯一方法是使用 objectName,这似乎需要 C++ 应用程序。

提前致谢。

4

1 回答 1

4

您可以将 JavaScript 对象用作地图。您不能在 QML 中直接操作它,但您可以将处理此对象的所有代码移动到 JavaScript 文件中并将其作为模块包含在内。这是一个简单的例子:

地图.js:

var _map = new Object()

function value(key) {
    return _map[key]
}

function setValue(key, value) {
    _map[key] = value
}

function remove(key) {
    delete _map[key]
}

function keys() {
    return Object.keys(_map)
}

function process() {
    for (var key in _map) {
        /* do something */
    }
}

QML 示例:

import QtQuick 1.1
import "Map.js" as Map

Item {
    Component.onCompleted: {
        Map.setValue("test", "hello")
        console.log("test = ", Map.value("test"))
        Map.remove("test", "hello")
        console.log("test = ", Map.value("test"))
    }
}

输出将是:

test =  hello
test =  undefined
于 2012-08-12T11:35:03.283 回答