在我的钛应用程序中,我必须显示元素列表,为此我使用以下视图:
<Alloy>
<Collection src="featuredEvents"/>
<Window id="win" class="container" navBarHidden="true" exitOnClose="true" onOpen="showIndicator">
<View id="navView"></View>
<ActivityIndicator id="activityIndicator" message="L('loading')" />
<TableView id="featuredEvents" dataCollection="featuredEvents" dataFilter="filterEvents" opacity="0" class="list">
<TableViewRow eventId="{alloy_id}" onClick="showEvent">
<View class="event-wrapper">
<ImageView image="{img}" eventId="{alloy_id}" defaultImage="/img/loading.jpg"/>
<View class="eventImageOverlayYellow" eventId="{alloy_id}">
<Label id="eventName" text="{name}" eventId="{alloy_id}" />
<View id="eventTypeContainer" class="iconedLabelBig">
<ImageView image="{icon}" class="iconBig" />
<Label id="eventType" text="{type}" eventId="{alloy_id}" />
</View>
</View>
</View>
</TableViewRow>
</TableView>
</Window>
</Alloy>
它运行正常但是android的性能非常差,所以我想用ListView而不是TableView重写相同的列表。 这就是我想出的:
<Alloy>
<Collection src="featuredEvents"/>
<Window id="win" class="container" navBarHidden="true" exitOnClose="true" onOpen="showIndicator">
<View id="navView"></View>
<ActivityIndicator id="activityIndicator" message="L('loading')" />
<ListView id="featuredEvents" dataCollection="featuredEvents" dataFilter="filterEvents" opacity="0" class="list">
<ListSection eventId="{alloy_id}" onClick="showEvent">
<ListItem class="event-wrapper">
<ImageView image="{img}" eventId="{alloy_id}" defaultImage="/img/loading.jpg"/>
<View class="eventImageOverlayYellow" eventId="{alloy_id}">
<Label id="eventName" text="{name}" eventId="{alloy_id}" />
<View id="eventTypeContainer" class="iconedLabelBig">
<ImageView image="{icon}" class="iconBig" />
<Label id="eventType" text="{type}" eventId="{alloy_id}" />
</View>
</View>
</ListItem>
</ListSection>
</ListView>
</Window>
</Alloy>
我的控制器index.js:
function showIndicator(e){}
$.win.open();
当我运行它时,我收到以下错误:
Location:
alloy/controllers/index.js
Message:
Uncaught typeError: cannot read property '_transform' of null
Source:
title:"undefined" != typeof $model__transform["name"] ? $model._
- 是否有合并数据集合组合使用的ListView示例?
- 知道这个错误意味着什么吗?
答案 0 :(得分:1)
我今天一直在与ListView
挣扎,所以我不是专家,但也许我可以提供帮助。我在这里阅读了ListView
和TableView
之间差异的文档:http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.ListView我也从这个问题得到了很好的帮助,这是ListView
的少数例子之一与合金。 Titanium Alloy ListView Nested Model Array of Tags
来自第一个链接的文档:
ListItem
对象的创建方式与TableViewRow
不同。通过将ListItem
个对象数组传递给ListDataItem
来创建ListSection
。
您无法使用add方法向ListItem
添加视图,这可以使用TableViewRow
来完成。要向ListItem
添加视图,您需要定义ItemTemplate
,使用模板属性绑定到列表数据项。
您无法为ListItem
显式设置属性或绑定事件。您必须使用ListDataItem
或ItemTemplate
的属性字典以及ItemTemplate
或ViewTemplate
的事件字典来设置它们。
至于你的错误,当我试图将变量直接传递到模板时,我得到了类似的错误,就像TableRow
一样。相反,我不得不用额外的属性填充绑定到寺庙的变量。不确定是否推荐,但它有效。