Alloy Backbone - 如何处理多级JSON集合

时间:2013-01-11 11:01:31

标签: backbone.js collections titanium appcelerator

我正在使用Appcelerators Titanium上的新合金框架,我完全失去了它的骨干handeling。

无论如何,我的问题是我有一个深层多级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>

现在,如何获取访问权限,让我们说第二级的内容?

我尝试过:

    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

好吧,我不知道我是如何看到文章,然后是内容或标题。

任何人都可以帮助我吗?我希望我已经把一切都搞清楚了。

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用model.get

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

答案 1 :(得分:0)

您可以采用的另一种方法是在模型上使用toJSON()来获取属性。

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

at(0)指定模型的索引,并且您正在使用JSON()来发送回属性。然后你可以从那里指定属性。