knockout.js - ko.utils.unwrapObservable和ko.toJS有什么区别?

标签 knockout.js

两者之间有什么区别?

毫无疑问,它们是同一回事,因为展开的可观察到的东西会精简为js原语。那么为什么有ko.toJS或反之亦然呢?

另外,为什么会有ko.mapping.toJS?这与ko.toJS是否有效?
在敲出JS中似乎有几个函数可以执行相同的操作,但是必须存在它们存在的原因。

最佳答案

它们之间有区别。

ko.toJS接收一个对象并“打开”并清除所有可观察对象中的对象。它对整个对象图执行此操作。我的行为很像一个序列化程序,这意味着如果您有循环引用,就会遇到问题。它在内部使用mapJsObjectGraph,太复杂了,以至于我现在无法完全编译。但是,当我需要将内容发布回服务器时,我倾向于使用它。

ko.utils.unwrapObservable只是确定该值是否是可观察的,如果是,则返回基础值。如果不是,则仅返回该值。例如,如果您使用的是映射插件,则可能会很方便,在该插件中最终可能同时具有可观察值和不可观察值的模型。

ko.mapping.toJS是列表中唯一可以怀疑在功能上有所重复的单词。它用于将映射的对象图映射回其原始状态。它看起来比ko.toJS复杂得多,但是我还没有使用过它,所以老实说我无法告诉您更多关于ko.toJS的信息。了解有关here的更多信息。

关于knockout.js - ko.utils.unwrapObservable和ko.toJS有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276833/

相关文章:

javascript - knockout 计算与订阅,时间问题

javascript - 只有第一行行是必填字段 - 动态表 Knockout.js

javascript - 在 knockout.js 中更改可观察但不通知订阅者

javascript - 何时在数据绑定(bind)表达式中使用或不使用带有 observable 的括号

javascript - 结合具有相似逻辑的 2 个 Knockout 指令

javascript - formatter.js 覆盖 knockout 值

javascript - 如果没有值则设置 select 的默认值

knockout.js - ajax调用成功后将viewmodel绑定(bind)到ui

javascript - knockout 类型错误 : m. apply is not a function

javascript - 如果数据绑定(bind)对象只有名称,那么 knockout 如何知道它?