Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 更新knockoutjs中的特定子对象_Javascript_Jquery_Knockout.js_Knockout Mapping Plugin - Fatal编程技术网

Javascript 更新knockoutjs中的特定子对象

Javascript 更新knockoutjs中的特定子对象,javascript,jquery,knockout.js,knockout-mapping-plugin,Javascript,Jquery,Knockout.js,Knockout Mapping Plugin,我有一个嵌套对象,如: Album -- Track 1 ----Clip --Track 2 ----(None) Album --Track x ----Clip 我已经使用敲除映射插件创建了viewModel。一切都按预期进行(实际上是在这个线程的帮助下) 现在的问题是轨迹2的剪辑对象最初不存在。在界面中,用户创建了它,我从服务器(ajax调用)获得了关于这个clip对象的正确JSON。现在,我如何更新我的viewModel(viewModel.albums是映射对象)以将此剪辑信息从A

我有一个嵌套对象,如:

Album
-- Track 1
----Clip
--Track 2
----(None)
Album
--Track x
----Clip
我已经使用敲除映射插件创建了viewModel。一切都按预期进行(实际上是在这个线程的帮助下)

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


如果这个问题没有意义,我将尝试在JSFIDLE中添加一些更直观的内容。提前谢谢

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

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

其中i是您要将其推送到的唱片集,j是您要将其推送到的唱片集中的哪个曲目。

谢谢,但这是不可能的,因为在此上下文中我没有唱片集/曲目数据。我使用
contextFor/dataFor
得到了一个解决方案,但问题是DOM没有正确更新,尽管新值在viewmodel中得到了很好的反映。我将元素存储在contextElement变量中。然后
track=ko.dataFor(contextElement)track.clip=ko.mapping.fromJS(data)
obj_viewmodel.albums()[1]。tracks()[1]。clip
为我提供了正确的值,但未反映在dom中