Knockout.js KnockoutJS-嵌套数据,加载子项

Knockout.js KnockoutJS-嵌套数据,加载子项,knockout.js,Knockout.js,我对knockoutjs非常陌生——已经完成了教程 我已经有了一个很好的开始。我有一份似乎很合适的申请 托科。在这种情况下,我需要用JSON中的数据填充一个表。这 数据是嵌套的,并且可以嵌套在任何深度,但我的API只会 曾经返回两级深的数据 例如 节点1 节点A 节点B 我已经设法把数据加载到我的表中了,可爱的。我已经吃过了 这更进一步,并且支持嵌套。我有一个要求,如果一个节点有子节点,它可以被注入到表的节点下面 这方面的一个例子是 节点1(HasChildren) 节点A

我对knockoutjs非常陌生——已经完成了教程 我已经有了一个很好的开始。我有一份似乎很合适的申请 托科。在这种情况下,我需要用JSON中的数据填充一个表。这 数据是嵌套的,并且可以嵌套在任何深度,但我的API只会 曾经返回两级深的数据

例如

  • 节点1
    • 节点A
    • 节点B
我已经设法把数据加载到我的表中了,可爱的。我已经吃过了 这更进一步,并且支持嵌套。我有一个要求,如果一个节点有子节点,它可以被注入到表的节点下面

这方面的一个例子是

  • 节点1(HasChildren)
    • 节点A
    • 节点B(有子节点)
由于节点B“HasChildren”,我希望允许将其子节点加载到节点B下的表中。在这种情况下,我将能够查询我的API,它将返回节点B的子节点

  • 节点1
    • 节点A
    • 节点B
      • 节点B1
      • 节点B2
我有一些粗略的工作,但它只在一级工作 节点。一旦达到2级,我似乎找不到我的方法 (addChild)。我不明白为什么它找不到方法,因为它是这样的 在我的ViewModel中

下面的帖子对解决这部分问题有很大帮助

救命啊

我已经把代码贴在这里了。。。(如果您在表格上向右滚动, 您可以单击“打开”,查看发生了什么!)

-原版(2012年4月18日)

-最新版本

非常感谢

劳伦斯

p、 s已经进一步更新了我的代码,所以尽管我对上面的内容有点困惑,但我已经开始研究如何实现代码回发,以便我们可以保存


看起来回发正在工作,但它不会回发更改的值,而是回发原始值。我想这是因为我需要使用一个可观察的耳环,现在就去探索它

我已经试着去理解你希望发生什么,我仍然有点不清楚,但我想我会提交我所做的,以便在需要时提供更多信息

您的问题标题提到嵌套,但从代码中可以看出,您并没有嵌套任何内容,而是将嵌套的父子对象展平

我不推荐使用jquery委托,因为它破坏了模型的封装,我将模板更改为使用click绑定,并在Crew/Component对象上放置了一个open函数

<td rowspan="3">
    <a data-bind="click: open">Open</a>
    <a>Save</a>
</td>

仅供参考-此小提琴在单击“打开”时仍会抛出错误,因为分配的对象未正确初始化。我把这个问题留给你来解决,因为我对这个领域的了解不够,无法自己解决。不过,添加行为工作正常

更新问题后编辑

下面是一个经过重新分解和简化的示例,应该可以让您开始学习。我删除了很多不必要的东西,以便更清楚地了解它是如何工作的


希望这能有所帮助。

我建议看一下ko.mapping来处理您正在处理的一些数据加载。我认为这将有助于解决您遇到的一些数据问题


我只是想让你知道我给了你一个很好的机会。我现在的感觉是视图绑定逻辑有点复杂。我正在讨论如何重构它,看看是否能发现这个问题。你有什么进展吗?已经更新了代码/问题,所以希望它更有意义(:LauHi@Madcapnmckay-谢谢你的帮助!这已经有点道理了。你的权利我在筑巢方面出了问题。我更新了上面的问题,试图澄清一些事情!再次感谢你的时间,Lau@uniquelau-嘿。谢谢你的澄清。我会尝试制作一个简化的例子。一个问题。有什么区别从UI的角度看团队和组件之间的关系?它们能统一成一个对象吗?一点区别都没有!它是同一个对象,我只是给它起了一个不同的名字,因为我不能让它重复使用同一个对象。再次感谢你在这方面花费的时间。上面的内容真的很有帮助。目前正在研究这个问题,了解每个部分是如何工作的ks,然后集成其余功能。也将在此处发回最终解决方案。再次感谢您在这方面的帮助。谢谢您,现在查看此内容。