2013-01-11 38 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()来发回属性。然后你可以从那里指定属性。