从可观察的attr获取Object

时间:2012-12-07 12:03:44

标签: model canjs canjs-model

我的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
    }
}]

}

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

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

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

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

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

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

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