Javascript 主干:渲染树数据并根据更改进行更新
我从服务器获取某种类型的树数据(仅作为示例): 要呈现此效果,我将使用Backbone.marionete.CollectionView&Backbone.marionete.CompositeView (以下) 但我需要每300秒轮询一次服务器,它可以返回更改的树:Javascript 主干:渲染树数据并根据更改进行更新,javascript,backbone.js,marionette,backbone-views,backbone-events,Javascript,Backbone.js,Marionette,Backbone Views,Backbone Events,我从服务器获取某种类型的树数据(仅作为示例): 要呈现此效果,我将使用Backbone.marionete.CollectionView&Backbone.marionete.CompositeView (以下) 但我需要每300秒轮询一次服务器,它可以返回更改的树: [ { nodeName: "top level 1", nodes: [ { nodeName: "2nd level, item 1", nodes: [
[
{
nodeName: "top level 1",
nodes: [
{
nodeName: "2nd level, item 1",
nodes: [
{
nodeName: "3rd level, item 1"},
{
nodeName: "new name"} // changed
]}
]},
{
nodeName: "top level 2",
nodes: [
{
nodeName: "2nd level, item 3",
nodes: [
{
nodeName: "3rd level, item 7"},
{
nodeName: "3rd level, item 8"},
{
nodeName: "3rd level, item 9"},
{
nodeName: "3rd level, item 10"} // added
]}
]}
]
现在我只需调用tree.update(data)来重新提交整个数据
如何仅更新依赖于已更改属性的视图
我正在努力减少重新招标的视图。我应该使用CompositeViews还是尝试类似主干关系模型的方法来完成此任务?由于每次初始化时都要重建集合,因此每次调用
update
时都要从零开始重新创建节点树
为了保存节点树,您必须同步从主干中的服务器获取的树。最简单的方法是创建与nodeName一起传递的唯一ID,并以此为基础构建模型和集合。然后你可以重写这个:
if (nodes) {
this.nodes = new TreeNodeCollection(nodes);
this.unset("nodes");
}
执行查找以查看节点是否存在,并附加到相关集合中,而不是将其清除并重新创建。由于每次初始化时都要重建集合,因此每次调用
update
时都要从零开始清除并重新创建节点树
为了保存节点树,您必须同步从主干中的服务器获取的树。最简单的方法是创建与nodeName一起传递的唯一ID,并以此为基础构建模型和集合。然后你可以重写这个:
if (nodes) {
this.nodes = new TreeNodeCollection(nodes);
this.unset("nodes");
}
执行查找以查看节点是否存在,并附加到相关集合中,而不是将其删除并重新创建。请随意接受答案或要求澄清。请随意接受答案或要求澄清。