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, так что, возможно, это неправильный путь.

Спасибо за ваши ответы.


person Fabrice Lefloch    schedule 11.04.2014    source источник


Ответы (2)


Вам нужно написать код в файле js в Appcelerator(Alloy).

Таким образом, вы можете легко получить эти события щелчка.

var dialog = Ti.UI.createOptionDialog({
        options : options,//Array
        title : 'Hi <?'
    });
    dialog.show();

    dialog.addEventListener('click', function(_d) {
        onclickactions[_d.index];
    });
person Dharmik Patel    schedule 11.04.2014

Я придумал это. Если вы решите просто создать диалоговое окно, которое работает в сплаве с использованием классического метода, вы можете сделать это.

Для меня ключевой частью было сохранение порядка опций в моем массиве опций. После того, как параметр был выбран, вы можете обратиться к массиву параметров с помощью 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();
}
person Martin    schedule 11.04.2014