【问题标题】:Appcelerator Titanium dynamically populate optionDialogAppcelerator Titanium 动态填充选项对话框
【发布时间】:2014-04-11 13:13:55
【问题描述】:

我是 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 上工作,所以也许这不是正确的方法。

感谢您的回答。

【问题讨论】:

    标签: titanium appcelerator titanium-alloy arraycollection


    【解决方案1】:

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

    通过这种方式,您可以轻松获取点击事件。

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

    【讨论】:

      【解决方案2】:

      我想出了这个。如果您选择只创建使用经典方法在合金中工作的对话框,您可以这样做。

      对我来说,关键部分是用我的选项数组来保持选项的顺序。选择选项后,您可以使用 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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 1970-01-01
        • 2017-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多