钛合金 - 如何最好地将单击事件分配给选项对话框上的选项?

标签 titanium appcelerator titanium-alloy

在钛合金中,我有一个用于某些过滤器选项的选项对话框。但我不确定如何根据最佳实践为每个选项添加点击事件。

查看

<OptionDialog id="filterDialog" title="Filter">
    <Options>
        <Option id="byDate">Date added</Option>
        <Option>Rating - high first</Option>
        <Option>Rating - low first</Option>
        <Option>Cancel</Option>
    </Options>  
</OptionDialog> 

Controller

$.byDate.addEventListener("click", function() {
    alert('Filter by date');
});

但是上述事件监听器会导致以下错误:

'undefined' is not an object (evaluating '$.byDate.addEventListener');

为每个选项分配点击事件的最佳实践是什么?

最佳答案

您必须创建附加到 OptionDialog 的 eventListener,而不是每个选项,然后检查 event.index 属性的值:

$.filterDialog.addEventListener('click', function(event) {
    switch (event.index) {
        case 0:
            alert('Date added selected')
            break;
        case 1:
            alert('Rating - hight selected')
            break;
        case 2:
            alert('Rating - low selected')
            break;     
    }
});

还记得设置OptionDialog.cancel property Titanium SDK 会自动处理取消按钮。根据您的情况,您可以将其添加到 <OptionDialog> :

<OptionDialog id="filterDialog" title="Filter" cancel="3">

关于钛合金 - 如何最好地将单击事件分配给选项对话框上的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492606/

相关文章:

ios - 是否要检查苹果是否接受某些第三方工具?

javascript - 钛 - Facebook 授权() - "An error occurred"

iphone - iPad/iPhone with Titanium 的启动 View

android - 钛合金createWebView加载html

android - Appcerator - Android 6 图像不加载

javascript - 钛金属日期

android - Appcelerator Studio 不会安装 Android SDK

ios - 钛合金中不调用手势(方向)事件

listview - 钛JS : Is it possible to group a collection alphabetically in a ListView using data binding?

titanium - Titanium iOS 项目构建失败错误