【问题标题】:Knockout.JS Mapping returning an empty array?Knockout.JS 映射返回一个空数组?
【发布时间】:2012-05-17 05:24:54
【问题描述】:

最后一天我一直在为此摸不着头脑..希望有人能解释一下。我有一个简单的 javascript 对象——数据——JSON.stringify(data) 像这样返回它;

{
    "dataList": [
        {
            "Id": 0,
            "Name": "0",
        },
        {
            "Id": 1,
            "Name": "1",
        }
    ]
}

我还有一个非常简单的淘汰视图模型;

var viewModel = {
            dataList: ko.observableArray([])
        };

然后我根据文档站点进行简单的 knockout.JS 映射调用;

ko.mapping.fromJS(data, viewModel);

我希望我的 viewModel 现在有一个 dataList 成员(它有),它是一个 2 数组(它不是!)。相反,我得到一个空数组。我在这里的映射中缺少什么?

【问题讨论】:

    标签: javascript json knockout.js


    【解决方案1】:

    您不需要在 viewModel 对象上定义属性;映射插件将为您创建它们。只需这样声明 viewModel:

    var viewModel = ko.mapping.fromJS(data);
    

    http://jsfiddle.net/vqaVT/

    当您需要使用来自服务器的更新数据更新您的 viewModel 时,您只需拨打另一个电话 ko.mapping.fromJS(data, viewModel)

    【讨论】:

    • 有趣.. 我注意到你在小提琴中做了 .dataList() - 为什么现在这是一个函数?这对映射正确吗?
    • 是的,映射插件将属性从输入映射到 observables 或 observableArrays。
    • 如果你用两个参数调用并且第二个不包含插件创建的'ko_mapping'属性,我认为它会将其视为映射并返回视图模型。
    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2019-12-05
    • 2019-10-22
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多