我是Titanium的新手,所以也许我的问题是新手问题,但我试图动态填充选项Dialog(使用Alloy框架)。 是否可以创建一个新的ArrayCollection并将其传递给我的optionDialog,如下所示:
<OptionDialog id="dialog" title="Choose Calendar" src=getAllCalendars>
<Options>
<Option id="{calendar_id}">{calendar_name}</Option>
</Options>
</OptionDialog>
其中getAllCalendar是一个返回新Array Collection的函数。
我知道我之前在Flex中做过类似的事情,但是我无法在Titanium上工作,所以也许它没有正确的方法。
感谢您的回答。
答案 0 :(得分:1)
您需要在Appcelerator(Alloy)中的js文件中编写代码。
通过这种方式,您可以轻松获得点击事件。
var dialog = Ti.UI.createOptionDialog({
options : options,//Array
title : 'Hi <?'
});
dialog.show();
dialog.addEventListener('click', function(_d) {
onclickactions[_d.index];
});
答案 1 :(得分:0)
我想出了这个。如果您选择仅使用经典方法创建合金的对话框,则可以执行此操作。
对我来说,关键部分是使用我的选项数组保持选项的顺序。选择该选项后,您可以使用e.index引用options数组以查找已选择的选项。
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();
}