Appcelerator Titanium动态填充optionDialog



我是Titanium的新手,所以我的问题可能是新手,但我正在尝试动态填充选项对话框(使用Alloy框架)。是否可以创建一个新的ArrayCollection并将其传递给我的optionDialog,如下所示:

<OptionDialog id="dialog" title="Choose Calendar" src=getAllCalendars>
        <Options>
            <Option id="{calendar_id}">{calendar_name}</Option>
        </Options>
   </OptionDialog>

其中,getAllCalendar是一个返回新数组集合的函数。

我知道我以前在Flex上做过这样的事情,但我不能在Titanium上工作,所以也许这不是正确的方式。

谢谢你的回答。

您需要在Appcelerator(Alloy)的js文件中编写代码。

通过这种方式,你可以很容易地获得点击事件。

var dialog = Ti.UI.createOptionDialog({
        options : options,//Array
        title : 'Hi <?'
    });
    dialog.show();
    dialog.addEventListener('click', function(_d) {
        onclickactions[_d.index];
    });

我想到了这个。如果你选择只创建一个对话框,它使用传统的方法在合金中工作,你可以这样做。

对我来说,关键部分是用我的选项数组保持选项的顺序。选择该选项后,您可以使用e.index引用选项数组来查找所选的选项。

function companyDialog(){
    // Build the list of options, maintaining the position of the options.
    if(Alloy.Globals.Form){
        Alloy.Globals.Form.Controller.destroy();
    }
        // My list of companies returns companyname, companycode, id
    companies = db.listCompanies();
    var options = [];
    _.each(companies, function(val){
        options.push(val.companyname + " (" + val.companycode + ")");
    });
    options.push("Cancel");
    var dialog = Ti.UI.createOptionDialog({
        title : 'Companies',
        options : options
    });
    dialog.addEventListener('click', function(e) {
        var setCode = "";
        var selection = "Unknown";
        if(options[e.index] != "Cancel") {
                    // DO WORK HERE.
                    alert(options[e.index].companyname);
        }
    });
    dialog.show();
}

相关内容

  • 没有找到相关文章

最新更新