Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript BackboneJS中的树结构:如何使用视图渲染它们_Javascript_Backbone.js_Nested_Backbone Views - Fatal编程技术网

Javascript BackboneJS中的树结构:如何使用视图渲染它们

Javascript BackboneJS中的树结构:如何使用视图渲染它们,javascript,backbone.js,nested,backbone-views,Javascript,Backbone.js,Nested,Backbone Views,我有一个简单的主干应用程序,可以处理分层项目。这个模型(到目前为止)很简单,除了ID之外,它应该只包含三个属性:content,order,和parent\u ID。最后一个属性应该包含对其父模型实例的引用,如果是根级别的项,则应该包含对其父模型实例的引用。order属性将用于在树的同一级别对项目进行排序,我想实现一些拖放功能来手动对项目进行排序 服务器端JSON已经按照树的顺序对项目进行了排序,但是我不确定如何在视图中处理这个问题。目前,我在项目视图中所做的是在$el元素中添加一个左填充,以表

我有一个简单的主干应用程序,可以处理分层项目。这个模型(到目前为止)很简单,除了
ID
之外,它应该只包含三个属性:
content
order
,和
parent\u ID
。最后一个属性应该包含对其父模型实例的引用,如果是根级别的项,则应该包含对其父模型实例的引用。
order
属性将用于在树的同一级别对项目进行排序,我想实现一些拖放功能来手动对项目进行排序

服务器端JSON已经按照树的顺序对项目进行了排序,但是我不确定如何在视图中处理这个问题。目前,我在项目视图中所做的是在
$el
元素中添加一个左填充,以表示一些“缩进”,但本质上它仍然是一个项目的平面列表。这就是为什么我不确定如何实现拖放排序,以防止项目超出范围(如上面的父项目)


如何使用BackboneJS清晰地解决此模型渲染问题?

它不是“纯”主干(它使用的是Marionette.js),但任何研究类似问题的人都应该对这篇文章感兴趣:

它不是“纯”主干(它使用的是Marionette.js),但这篇文章应该引起任何研究类似问题的人的兴趣:

我曾经准确地实现过这一点。我处理这件事的方式不同。我没有保存对父元素的引用,而是在集合中的函数中使用父元素id来生成子树节点,这必须在递归下完成,以加载N级项。最后,每个单亲都被包装在
标记中,而孩子则被包装在
  • 标记中,因为每个单亲都有
    +
    -
    符号来折叠展开子树。始终关注易于理解的解决方案单个项目视图比仅
  • s更复杂,每个视图都有自己的操作和状态,我想防止与视图中元素匹配的CSS选择器也与其子视图中的元素匹配。我曾经准确地实现过这一点。我处理这件事的方式不同。我没有保存对父元素的引用,而是在集合中的函数中使用父元素id来生成子树节点,这必须在递归下完成,以加载N级项。最后,每个单亲都被包装在
    标记中,而孩子则被包装在
  • 标记中,因为每个单亲都有
    +
    -
    符号来折叠展开子树。始终关注易于理解的解决方案单个项目视图比仅
  • s更复杂,每个视图都有自己的操作和状态,我希望防止在视图上匹配元素的CSS选择器也匹配其子视图中的元素。