首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Knockout.js映射插件,访问json嵌套多层

问Knockout.js映射插件,访问json嵌套多层
EN

Stack Overflow用户
提问于 2013-05-03 05:33:34
回答 2查看 328关注 0票数 1

Knockout.js映射插件是否可以访问json嵌套数据,或者它只能找到第一级数据?

如果映射插件无法访问嵌套数据,还有其他解决方案吗?

在我的示例中,"Number“映射正确,但"DueDate”不映射。

代码语言:javascript
复制
// json with nested data
{
   "Level1":[
      {
         "Level2":{
            "DueDate":"\/Date(1362124800000)\/",
            },
         "Number":5499
      },
}

// Here's my data model - I need to map the "DueDate" observable.
var viewModel;
$.getJSON('/myJsonData', function (data) {
    viewModel = ko.mapping.fromJS(data);
    ko.applyBindings(viewModel);
});
EN

回答 2

Stack Overflow用户

发布于 2013-05-03 05:51:43

我使用了自己开发的单向递归映射函数。它对我来说工作得很好,而且它很小。

代码语言:javascript
复制
function convertToObservable(obj) {
    var newObj = {},
        key,
        value;

    if (!$.isPlainObject(obj)) {
        return obj;
    }

    for (key in obj) {
        if (obj.hasOwnProperty(key)) {
            value = obj[key];
            // console.log(key + ':', value);
            newObj[key] = $.isArray(value)
                ? ko.observableArray($.map(value, convertToObservable))
                : $.isPlainObject(value) ? convertToObservable(value) : ko.observable(value);
        }
    }
    return newObj;
}

它依赖于jQuery,但是如果不使用jQuery,它可以被重写。

票数 1
EN

Stack Overflow用户

发布于 2013-05-03 05:53:44

您确定不能访问DueDate吗?因为在我的fiddle里我可以。

代码语言:javascript
复制
// json nested data
var data = {
    "Level1": [{
        "Level2": {
            "DueDate": "\/Date(1362124800000)\/",
        },
            "Number": 5499
    }]
};
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);

var dueDate = viewModel.Level1()[0].Level2.DueDate;

alert(typeof dueDate);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16348091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档