【问题标题】:update specific child object in knockoutjs更新 knockoutjs 中的特定子对象
【发布时间】:2012-09-16 03:42:51
【问题描述】:

我有一个嵌套对象,例如:

Album
-- Track 1
----Clip
--Track 2
----(None)
Album
--Track x
----Clip

我使用淘汰映射插件创建了 viewModel。一切都按预期工作(实际上在这个线程can't resolve knockout js with nested objects的帮助下)

现在的问题是轨道 2 的剪辑对象最初不存在。在界面中,用户创建了它,我从服务器(ajax 调用)获得了有关此剪辑对象的正确 JSON。现在,如何更新我的 viewModel(viewModel.albums 是映射的对象)以将此剪辑信息从我的 Ajax 回调推送到 Track 2?我对 ajax 回调中的 Track 上下文没有任何线索。如果我有,我想会更容易。

如果这个问题没有意义,我会尝试在 jsfiddle 中添加一些更直观的东西。提前致谢。

【问题讨论】:

    标签: javascript jquery knockout.js knockout-mapping-plugin


    【解决方案1】:

    听起来你想要这样的东西:

    viewModel.albums()[i].tracks()[j].clip = ko.mapping.fromJS(data);
    

    其中 i 是您要将其推送到哪个专辑,而 j 是您要将其推送到该专辑中的哪个曲目。

    【讨论】:

    • 谢谢,但这是不可能的,因为我在这种情况下没有专辑/曲目数据。我得到了一个使用contextFor/dataFor 的解决方案,但问题是DOM 没有正确更新,尽管新值很好地反映在视图模型中。我将元素存储在 contextElement 变量中。然后track = ko.dataFor(contextElement) track.clip = ko.mapping.fromJS(data)obj_viewmodel.albums()[1].tracks()[1].clip 给了我正确的值,但没有反映在 dom 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2017-12-26
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多