我正在使用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
好吧,我不知道我是如何看到文章,然后是内容或标题。
任何人都可以帮助我吗?我希望我已经把一切都搞清楚了。
谢谢!
答案 0 :(得分:1)
您需要使用model.get:
myCollection.at(0).get("articles")[0].content
答案 1 :(得分:0)
您可以采用的另一种方法是在模型上使用toJSON()来获取属性。
myCollection.at(0).toJSON().content
at(0)指定模型的索引,并且您正在使用JSON()来发送回属性。然后你可以从那里指定属性。