0

我正在使用 Appcelerators Titanium 上的新合金框架,我完全迷失了它的主干处理。

无论如何,我的问题是我得到了一个看起来像这样的深层多级 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

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

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

谢谢!

4

2 回答 2

1

您需要使用model.get

myCollection.at(0).get("articles")[0].content
于 2013-01-11T16:03:54.283 回答
0

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

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

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

于 2013-01-11T19:42:03.033 回答