【问题标题】:How to exclude certain properties as observable using Ko.mapping.fromJSON如何使用 Ko.mapping.fromJSON 将某些属性排除为可观察的
【发布时间】:2015-04-16 18:21:33
【问题描述】:
var mapping = {  
'observe': ["testProperty"]  
}  
var viewModel = ko.mapping.fromJSON(data, mapping);  

但这会使 viewModel 中的所有属性都成为可观察的。

【问题讨论】:

  • 据我所知,可观察属性映射到 UI 元素,因此它们始终彼此同步。那么为什么要排除一个属性成为可观察对象呢?
  • 例如 Model 有 10 个属性。从这些属性中,我想使用 6 个属性作为文本框字段和 4 个属性作为只读字段。所以,我想在我的 ViewModel 中将 6 个属性设为可观察对象,将 4 个属性设为不可观察对象。
  • 即使某些属性出现在只读字段中,您不认为应该有一些绑定黑白属性和 UI 字段(只读)吗?对我来说似乎更好的方法是使用“启用”绑定。

标签: knockout.js


【解决方案1】:

是的,我们可以使用直接来自 Ko Doc 的 herecopy 来做到这一点 使用“复制”忽略某些可观察的属性

如果您希望映射插件简单地复制普通属性而不使它们可观察,请使用此参数,如下所示。

// tell the mapping plugin to handle all other properties normally, but to simply copy this property instead of making it observable

    var mapping = {
        'copy': ["propertyToCopy"]
    }
    var viewModel = ko.mapping.fromJS(data, mapping);

我建议你阅读这篇精彩的帖子here

工作小提琴here解释案例

【讨论】:

  • 此代码适用于单个实体。你能解释一下如何使用这个复制关键字来收集对象吗?
  • 在上面的小提琴示例中,我想让 b1 不可观察。
猜你喜欢
  • 2018-12-05
  • 2014-10-23
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
  • 2012-12-02
  • 1970-01-01
  • 2012-12-07
相关资源
最近更新 更多