Knockoutjs映射

时间:2013-01-12 01:03:04

标签: knockout.js knockout-mapping-plugin

使用knockoutjs映射插件是否可以只使子元素可观察?

我有以下格式的大量数据(400/500记录)自动映射非常慢,因为它使每个字段都可以观察到,但我只需要让孩子可以观察到。

如何在忽略其他字段的情况下手动只显示子字段?

此外,处理最新数据量的最佳方法是什么?任何带有knockoutjs代码的服务器端分页都会很棒。

感谢。

{
    "name": "John Smith",
    "age": 32,
    "employed": true,
    "address": {
        "street": "701 First Ave.",
        "city": "Sunnyvale, CA 95125",
        "country": "United States"
    },
    "children": [
        {
            "name": "Richard",
            "age": 7
        },
        {
            "name": "Susan",
            "age": 4
        },
        {
            "name": "James",
            "age": 3
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

您不必将整个对象传递到映射函数,只需传递您想要映射的部分。由于您只想映射子数组,请将其传递给映射器。

var data = {
    "name": "John Smith",
    "age": 32,
    "employed": true,
    "address": {
        "street": "701 First Ave.",
        "city": "Sunnyvale, CA 95125",
        "country": "United States"
    },
    "children": [
        {
            "name": "Richard",
            "age": 7
        },
        {
            "name": "Susan",
            "age": 4
        },
        {
            "name": "James",
            "age": 3
        }
    ]
};

data.children = ko.mapping.fromJS(data.children);

否则,您可以使用映射选项指定要复制其他字段(而不是映射它们)。

var mappingOptions = {
  'copy': [
    'name',
    'age',
    'employed',
    'address'
  ]
};
var mapped = ko.mapping.fromJS(data, mappingOptions);