2013-01-11 43 views
0

我正在與Appcelerators Titanium上的新合金框架合作,並且我總是因爲它的主幹handeling而丟失。合金骨架 - 如何處理多層次的JSON集合

不管怎樣,我的問題是,我得到了一個深刻的多層次的JSON對象,它看起來是這樣的:

[{ 
    title: "Bla", 
    id: 0, 
    content: "lorem ipsum dolor sit amet..", 
    articles: [ 
     { 
      title: "bla2", 
      content: "bla bla bla", 
      nr: "article 1" 
     }, 
     { 
      title: "bla3", 
      content: "bla baasdadla bla", 
      nr: "article 2" 
     } 
    ] 
}, 
{ 
    title: "Bla 2", 
    id: 1, 
    content: "lorem ipsum dolor sit amet..", 
    articles: [ 
     { 
      title: "bla3", 
      content: "bla bla bla", 
      nr: "article 10" 
     }, 
     { 
      title: "bla4", 
      content: "bla baasdadla bla", 
      nr: "article 11" 
     } 
    ] 
}]; 

而且我成功地實現了它讓我得到一個不錯的TableView與第一級的標題,但現在我需要進入第二級,這是我失敗的地方。

我在一個單一的集合一切

var myCollection = Alloy.createCollection('bla'); 
    myCollection.add(MyBigBigBigJson); // see above 
    myCollection.fetch(); 

我view.xml用:

<Alloy> 
    <Collection src="bla"> 
    <TableView dataCollection="bla"> 
     <TableViewRow> 
      <Label text="{title}" /> 
     </TableViewRow> 
    </TableView> 
</Alloy> 

現在,我如何才能訪問,可以說第2級的內容?

我試了一下:

myCollection.at(0) // first object in my collection (where title = "Bla") 

    myCollection.at(0).articles[0].content // gives me an error and my app crashes... 

    myCollection.at(0).articles // undefined 

好了,我不知道我是如何得到的物品,然後到內容或標題。

任何人都可以幫到我嗎?我希望我已經明確了一切。

謝謝!

回答

1

您需要使用model.get

myCollection.at(0).get("articles")[0].content 
+0

謝謝,就是這樣! :) –

0

另一種方法,你可以採取是使用的toJSON()在你的模型中,得到的屬性。

myCollection.at(0).toJSON().content 

at(0)指定了模型的索引,並且您正在使用JSON()來發回屬性。然後你可以從那裏指定屬性。