从actionscript(flex)移动到钛,我正在尝试使用xml标记。我所拥有的是我从文档
中选取的模板<ItemTemplate name="template">
<ImageView left="0" bindId="pic" id="icon" />
<Label bindId="info" id="title"/>
</ItemTemplate>
</Templates>
我的问题是,如果有人点击图片或列表项目本身,如何处理事件。通过xml标记?那么如何引用模板中的任何控件包装?
我试过了
<ImageView left="0" bindId="pic" id="icon" onclick="doClick()" />
function doClick(e) {
alert($.info.text);
}
这只会产生错误,我仍然不知道点击了哪张图片。
任何帮助都会很棒..
感谢Mike
答案 0 :(得分:0)
你签出了Alloy Quick Start吗?我想你的许多问题都可以在那里得到解答。
无论如何,对于ListViews,你不能在模板中的项目中添加一个事件监听器,它只是一个模板而不是屏幕上的实际内容(尚未),refer here, and look at the alloy section.
相反,您需要ListView本身上的itemclick
事件侦听器。请查看下面的XML标记的简单示例。
<ListView id="listView" defaultItemTemplate="template" onitemclick="yourEvent" >
<!-- The Templates tag sets the ListView's templates property -->
<Templates>
<!-- Define your item templates within the Templates tags or use the
Require tag to include a view that only contains an ItemTemplate -->
<ItemTemplate name="template">
<ImageView bindId="pic" id="icon" />
<Label bindId="info" id="title" />
<Label bindId="es_info" id="subtitle" />
</ItemTemplate>
</Templates>
<ListSection headerTitle="Fruit / Frutas">
<!-- You can specify any ListItem or ListDataItem properties in ListItem -->
<!-- Specify data to bind to the item template with inline attributes
defined as <bindId>:<Ti.UI.Component.property> -->
<ListItem info:text="Apple" es_info:text="Manzana" pic:image="/apple.png" />
<ListItem info:text="Banana" es_info:text="Banana" pic:image="/banana.png" />
</ListSection>
</ListView>
此外,您需要任何JavaScript在控制器文件中,而不是在XML标记文件中。 * .js在视图后面有javascript,即* .xml。