KnockoutJS - 嵌套数据,载入儿童(KnockoutJS - Nested Data,

2019-09-16 14:17发布

我非常非常新的knockoutjs - 通过教程工作过,我已经取得了不错的开端。 我有应用程序,它似乎很适合KO。 在我需要填充表与JSON数据。 该数据被嵌套,并且可以在任何深度嵌套,但我的API将只返回数据深两个层次。

  • 节点1
    • 节点A
    • 节点B

我已经成功地获取数据加载到我的表,可爱。 我已经采取了这一步,并支持嵌套。 我有一个要求,这样,如果一个节点有孩子,就可以节点到桌子底下注入。

这方面的一个例子是...

  • 节点1(HasChildren)
    • 节点A
    • 节点B(HasChildren)

为节点B“HasChildren”,我想允许它装载的孩子到表,下面节点B.在这种情况下,我将能够查询我的API,它会返回孩子节点B

  • 节点1
    • 节点A
    • 节点B
      • 节点B1
      • 点B2

我已经得到的东西大致的工作,但它仅适用1级节点上。 一旦获得对level2的,似乎无法找到我的方法(的addChild)。 我想不通,为什么不能找对方法,因为它是在我的视图模型。

下面的文章,走一段很长的方式来解决这个问题的这一部分。

救命!

我在这里粘贴代码...(如果您滚动到桌子上的权利,你可以点击打开,看到的,发生了什么事!)

http://jsfiddle.net/8k6pj/1/ -原始版本(18日2012年4月)

http://jsfiddle.net/8k6pj/6/ -最新版本

提前谢谢了!

劳伦斯

PS有进一步的更新我的代码,所以虽然我有点粘在上面,已经开始寻找到实施代码将如何回传,所以我们可以节省。

它看起来像回发的工作,但它不回来后更改后的值,原来的值被调回。 认为这是因为我需要使用ObservableArray,探索,现在。

Answer 1:

我是了解你想发生什么事了个去,我还是有点不清楚,但认为我会提出我的订单,如果需要招来更多的信息一样。

你的问题中提到的标题嵌套但是从你的代码,它似乎你不嵌套任何东西,而不是你压扁你的嵌套的父子对象。

相反,使用jQuery的代表,我不会推荐,因为它打破了你的模型封装的,我改变了你的模板中使用点击绑定并放置在乘员/ Component对象的开放功能。

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

我还注意到,您的addChild方法需要你到一个数组传递给它。 你原来的代码不会担任船员对象本身不具有船员集合,所以我花了猜测的使用船员收集他们的父组件。

所有这些改变意味着我必须通过根的ViewModels并在构造函数的父组件。

http://jsfiddle.net/madcapnmckay/fdb5r/2/

仅供参考 - 单击打开时所分配的对象没有得到正确初始化该小提琴还抛出错误。 我已经离开了这个高达你来解决,因为我不明白域不足以解决它自己。 在添加行为工作正常不过。

更新后的问题编辑

这里有一个因素再和简化的例子,应该让你开始。 我删除了大量的非必要东西更清楚它是如何工作的。

http://jsfiddle.net/madcapnmckay/xxGam/

希望这可以帮助。



Answer 2:

我建议考虑看看ko.mapping处理一些你正在使用的数据加载。 我认为这将帮助与一些您遇到的数据问题

http://knockoutjs.com/documentation/plugins-mapping.html



文章来源: KnockoutJS - Nested Data, Loading Children
标签: knockout.js