QML:如何使用javascript创建嵌套模型
QML: How to create a nested model with javascript?
我的目标是获取包含嵌套注释的json数据(如在hackernews或reddit上),并将其显示在我的qml应用程序中。我发现了如何从嵌套模型创建树视图:http://qt-project.org/forums/viewthread/30521
现在我正试图弄清楚如何使用javascript构建嵌套模型。我需要这样的东西:
ListModel {
id: treemodel
ListElement { text: "Level 1, Node 1" }
ListElement {
text: "Level 1, Node 2"
children: [
ListElement { text: "Level 2, Node 1"
children: [
ListElement { text: "Level 3, Node 1" }
]
},
ListElement { text: "Level 2, Node 2" }
]
}
ListElement { text: "Level 1, Node 3" }
}
我可以将顶级元素添加到模型中,如下所示:
function createCommentsModel() {
var i = 0;
for (i = 0; i < 5; i++) {
treemodel.append ({
text: "Level 1, Node " + i
});
}
}
但是,我如何将子元素添加到这些元素中(以及递归地为这些子元素添加子元素等)?
可能有几种方法可以做到这一点,但我无法使用Qt.createQmlObject()创建ListElement。因此,我得到元素数组中的最后一个节点,并递归地向其中添加子节点。
我不确定评论的格式是什么,但我相信,经过一些修改,下面的代码可以帮助你实现你想要的。
function createCommentsModel() {
treemodel.append ({
text: "Level 1, Node " + i
});
//Get last appended node
var level1node = treemodel.get(treemodel.count - 1);
//Add children recursively
addNode(level1node, 2, 1, 3)
}
function addNode(node, level, nodenr, maxLevel) {
if(node === undefined || level > maxLevel) {
return {}
}
node.elements.append({
text: "Level " + level +", Node " + nodenr,
elements: []
});
var child = node.elements.get(node.elements.count - 1);
var returnValue = addNode(child, level + 1, nodenr, maxLevel);
return returnValue;
}
相关文章:
- 从对象数组中动态创建嵌套json
- 如何动态创建嵌套对象
- 动态创建嵌套的JSON对象父对象和子对象
- 在RubyonRails中创建嵌套表单
- 正在创建嵌套的if+else-if语句,但函数返回为未定义
- 基于类名创建嵌套列表
- 正在创建嵌套的HTML结构
- 创建嵌套的JSON数组
- 在 d3.js 中创建嵌套的 SVG 节点
- AngularJs:迭代指令内的数组以创建嵌套的指令集
- 如何在解析中创建嵌套的多对多关系
- 煎茶触摸 2:在选项卡面板内创建嵌套列表
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- 是否可以在灰尘中创建嵌套的助手.js
- 使用 for 循环 javascript 创建嵌套的空数组
- 如何创建嵌套有 html 内容(模板)的基础弹出框
- 从动态创建的单个列表创建嵌套列表
- JavaScript:如何使用嵌套对象的变量名称创建嵌套对象
- 动态创建嵌套的 JSON 对象
- 如何创建嵌套的 JSON 字符串