Javascript 表示主干中任意深度嵌套列表的最简单方法
我是个新手。我有一个任意深度的嵌套列表,其中列表中的每个节点都可能有一个子集合。例如:Javascript 表示主干中任意深度嵌套列表的最简单方法,javascript,jquery,backbone.js,hierarchical-data,nested-lists,Javascript,Jquery,Backbone.js,Hierarchical Data,Nested Lists,我是个新手。我有一个任意深度的嵌套列表,其中列表中的每个节点都可能有一个子集合。例如: item 1 item a item i item ii item b item c item 2 item 3 etc 我想知道用主干表示这种数据结构最简单的方法是什么 如果重要的话,我不喜欢一开始就加载整个结构,或者根据需要加载每个级别。最简单的 我不想走骨干关系的道路,因为我觉得这样做太过分了 (提前)感谢您的帮助。我会制作一个简单的模型,可能会将默认属性children设
item 1
item a
item i
item ii
item b
item c
item 2
item 3
etc
我想知道用主干表示这种数据结构最简单的方法是什么
如果重要的话,我不喜欢一开始就加载整个结构,或者根据需要加载每个级别。最简单的
我不想走骨干关系的道路,因为我觉得这样做太过分了
(提前)感谢您的帮助。我会制作一个简单的模型,可能会将默认属性
children
设置为new Collection
(如果需要)。主要部分是从JSON数据加载到模型
var MyModel = Backbone.Model.extend({
});
var MyCollection = Backbone.Collection.extend({
model: MyModel,
load: function(data) {
for(var i in data) {
if (_.isString(data[i])) {
this.add(new MyModel({
title: data[i]
}));
} else {
var collection = new MyCollection();
collection.load(data[i]);
this.add(new MyModel({
title: i,
children: collection
}));
}
}
}
});
var collection = new MyCollection();
collection.load({
'item1': {
'item a': ['item i', 'item ii'],
0: 'item b',
1: 'item c'
},
0: 'item2',
1: 'item3'
});
console.log(collection);
在本例中,只有带有“0”和“1”键的项才会进入集合,但您可以看到这个想法。假设您的数据结构如下所示
[
{
标题:“项目1”,
节点:[
{标题:“项目a”,
节点:[
{标题:“项目一”},
{标题:“项目二”}
]
},
{标题:“项目b”
}
]
},
{
标题:“项目2”
}
]
您可以通过覆盖模型的解析方法来设置层次结构:
var Node=Backbone.Model.extend({
解析:函数(数据){
this.nodes=新节点(data.nodes,{parse:true});
返回u.omit(数据,'nodes');
}
});
var Nodes=Backbone.Collection.extend({
模型:节点
});
var c=新节点(数据结构,{parse:true});
//parse:只有在将数据作为参数传递时才需要true
Node.parse
从数据散列中提取nodes
属性,在对象上构建自定义属性,然后返回其余属性,让主干处理其他属性。然后使用model.nodes
访问集合。还有一把小提琴