2012-12-07 4 views
0

내 JSON을 관찰 할 필요가 있습니다. 데이터는 다음과 같습니다관찰 가능한 attr에서 객체 가져 오기

{ 
"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을 얻을? 나는 모른다 - 얼마나 많은 k => v 또는 param 내부의 객체. 내가 알 필요 - PARAM 변화를 가지고 있으며, 나는 ('event.1.param') data.attr 얻을 좋아하고

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

이 가능있어 것? 아니면 쉬운 방법을 말해 줄 수 있습니까?

답변

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') 
+0

당신이 잘못입니다. 이 경우 : – Vladislav

+0

실수가 있습니다. 이 경우 o.attr ('event.0.param'); 우리는 단순한 물체가 아닌 다른 것을 가지고 있습니다 : { "_data": { "a": 1, "b": { "0": 1, "1": 2, "2": 3, "length" 3, "_cid": ". observe6", "jQuery18203471092500258237": { "events": { "change": ..... 우리는 다음을 사용해야합니다. o.attr ('event.0.param') .attr(); { "a": 1, "b": [1, 2, 3]} – Vladislav

0

죄송합니다 친구, 우리는 그냥 ...

끝에 .attr()를 추가해야 우리가해야합니다이 경우
o.attr('event.0.param').attr() 

{ "A"를 : 1, "B": [1, 2, 3]}