0

Appcelerators Titanium で新しい Alloy Framework を使用していますが、そのバックボーン処理で完全に迷っています。

とにかく、私の問題は、次のような深いマルチレベルの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 を取得できるように実装に成功しましたが、今は 2 番目のレベルにアクセスする必要があり、ここで失敗します。

1 つのコレクションですべてを手に入れた

    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

どうやって記事にたどり着き、それからコンテンツやタイトルにたどり着くのかわかりません。

誰でも私を助けることができますか?私はすべてを明確にしたことを願っています。

ありがとう!

4

2 に答える 2

1

model.getを使用する必要があります:

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

もう 1 つの方法は、モデルで toJSON() を使用してプロパティにアクセスすることです。

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

at(0) はモデルのインデックスを指定し、JSON() を使用して属性を送り返すだけです。次に、そこからプロパティを指定するだけです。

于 2013-01-11T19:42:03.033 に答える