javascript-淘汰赛映射插件[创建,更新]:已创建对象,无法更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-淘汰赛映射插件[创建,更新]:已创建对象,无法更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1806字,纯文字阅读大概需要3分钟。
内容图文
![javascript-淘汰赛映射插件[创建,更新]:已创建对象,无法更新](/upload/InfoBanner/zyjiaocheng/677/6c16b297d05c4e8aa6247de8b97eefd8.jpg)
我在这里贴了我的代码:http://jsfiddle.net/HYDU6/6/
这是我实际使用的精简版,但是抓住了我问题的本质.我的视图模型如下所示:
var viewModel = {
objects: {
foo: [
{ text: "Foo's initial" },
],
bar: [
{ text: "Bar's initial" },
]
}
}
我使用的是ko.mapping插件,我的对象创建处理程序先从objects.foo实例化Obj,然后从object.bar实例化Obj,并在数组中返回结果两项.这部分工作正常;我用
var view = {};
ko.mapping.fromJS(viewModel, mapping, view);
我的问题是根据新数据进行更新. (即从服务器获取数据).我有一个新数据对象,然后尝试
ko.mapping.fromJS(new_model, mapping, view);
我怀疑这是不正确的,但是尽管进行了广泛的搜索,但仍无法使它正常工作. (相信我,已经好几天了.):无论如何,谢谢您的帮助.
编辑:所以我基本上已经弄清楚了-我在很大程度上依赖于mapping.fromJS,而且某些东西没有被包装到可观察对象中.我还意识到我并不需要create(),只需要update(),因为无论如何它都是在create()之后调用的.如果您有类似的问题,请告诉我!
解决方法:
约翰,
使用ko.mapping更新数据时,请确保您没有创建新项目.您的UI已经绑定到现有项目,因此您只想更新现有项目属性的值;不创建新的.对于您发布的示例,您将需要调整地图的“更新”方法,以将新值插入正确的ko.observable属性,而不是在该位置创建新对象.根据用法,ko.mapping的“ update”方法具有一些不同的参数列表,第三个参数是地图的目标对象.您可能要更新该对象的属性.
obj.target[label].items[0].text(obj.data[label][0].text);
但是,这有点混乱.您可能需要创建第二级映射(创建/更新)来处理“深层”对象层次结构,就像摆弄小提琴一样.例如,一个针对“ foo / bar”级别的对象的映射,以及另一个从“ update”内部对ko.fromJS的调用,以及另一个针对子对象Obj()对象的映射.
解决此问题后,您将遇到几个简单的绑定错误,可以使用另一个“带”绑定或子数组的“ foreach”绑定来解决这些错误.
总体而言,您只是遇到了两个常见的陷阱,但是没有什么太严厉的.您可以在我的博客上了解一些有关这些陷阱的更多信息:http://ryanrahlf.com/getting-started-with-knockout-js-3-things-to-know-on-day-one/
我希望这有帮助!
内容总结
以上是互联网集市为您收集整理的javascript-淘汰赛映射插件[创建,更新]:已创建对象,无法更新全部内容,希望文章能够帮你解决javascript-淘汰赛映射插件[创建,更新]:已创建对象,无法更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。