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

时间:2014-03-18 22:43:37

标签: titanium appcelerator titanium-alloy

在Titanium Alloy中,我有一些OptionDialog用于某些过滤器选项。但是,根据最佳做法,我不确定如何为每个选项添加点击事件。

查看

<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> 

控制器

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

但是上面的事件listerner导致以下错误:

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

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

1 个答案:

答案 0 :(得分:4)

您必须创建附加到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">