钛移动xmlmarkup事件

时间:2013-09-10 00:17:22

标签: templates events mobile titanium

从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

1 个答案:

答案 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。