我是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();
}