2012-12-07 43 views
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 
    } 
}] 

}

如何獲得PARAM狀物體?我不知道 - 參數中有多少k => v或者對象。我需要知道 - PARAM有變化,我想獲得data.attr(「event.1.param」),並得到了

"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() 

在這種情況下,我們將有{ 「一」:1, 「b」:1,2,3]}

相關問題