0

我的 JSON 需要一些可观察的。数据如下所示:

{
"event": [{
    "id": 1,
    "name": "First",
    "param": {
        "a": 1,
        "b": [1, 2, 3]
    }
}, {
    "id": 2,
    "name": "Second",
    "param": {
        "a": 1,
        "b": [1, 2, 3, 4, 5, 6, 7],
        "c": 3
    }
}]

}

如何获得类似对象的参数?我不知道 - 参数中有多少 k=>v 或对象。我需要知道 - 参数有变化,我想得到 data.attr('event.1.param') 并得到

"param": {
    "a": 1,
    "b": [1, 2, 3, 4, 5, 6, 7],
    "c": 3
}

可能吗?或者你可以告诉我更简单的方法吗?

4

2 回答 2

1

有很多方法可以获得实际的对象总线,基本上你可以像对待任何数组一样对待它们:

var o = new can.Observe({
    "event": [{
        "id": 1,
        "name": "First",
        "param": {
            "a": 1,
            "b": [1, 2, 3]
        }
    }, {
        "id": 2,
        "name": "Second",
        "param": {
            "a": 1,
            "b": [1, 2, 3, 4, 5, 6, 7],
            "c": 3
        }
    }]
});

o.attr('event.0.param') // -> { "a": 1, "b": [1, 2, 3] }
// Get param 1
var index = 1;
o.attr('event.' + index + '.param');

// Got through all events
o.attr('event').forEach(function(data) {

});

// You can also handle it like a normal array
var index = 1;
o.event[index].attr('param')
于 2012-12-08T16:10:14.157 回答
0

抱歉,我们只需要在最后添加 .attr() ......

o.attr('event.0.param').attr()

在这种情况下,我们将有 { "a": 1, "b": [1, 2, 3] }

于 2012-12-10T07:29:13.717 回答