ExtJS - динамически генерировать флажки

У меня есть группа флажков, которая будет иметь динамическое количество флажков. Бэкэнд возвращает данные, содержащие метку и входное значение. Я зацикливаю эти записи и генерирую для каждого из них объект-флажок. Но когда я передаю сгенерированный массив в массив items, ничего не происходит.

Вот фрагменты моего класса группы флажков.

Ext.define("MyApp.view.form.field.CheckboxGroup",{
  extend:"Ext.form.CheckBoxGroup",
  ...
  ...
  initComponent:function(){

     this.items = getCheckboxes();

     ...

     this.callParent(arguments);
  },

  getCheckboxes:function(){
     Ext.Ajax.request({
        url:"blah/getcheckboxes",
        scope:this,
        success:function(resp_){
          var resp = Ext.JSON.decode(resp_.responseText);
          var checkboxesArr = [];
          if(resp.data){
            for(var i=0; i<resp.data.length; i++){
              checkboxesArr.push({boxLabel:resp.data[i].label, inputValue:resp.data[i].id, ....});
           }
         }
         return checkboxesArr;
     });

/*return checkboxesArr = [
       {boxLabel: 'Yes', name: this.name, inputValue: 'Y'},
       {boxLabel: 'No', name: this.name, inputValue: 'N'}         
    ];*/
}

Если я раскомментирую static checkboxesArr с двумя флажками и верну, что вместо этого он работает, но он не работает с checkboxesArr, сгенерированным с ответом сервера.

Спасибо

1 ответ

Решение

Вызов ajax является асинхронным, поэтому вы можете add предметы вместо:

getCheckboxes: function () {
    Ext.Ajax.request({
        url: "data1.json",
        scope: this,
        success: function (resp_) {
            var resp = Ext.JSON.decode(resp_.responseText);

            var checkboxesArr = [];

            if (resp.data) {
                for (var i = 0; i < resp.data.length; i++) {
                    checkboxesArr.push({
                        boxLabel: resp.data[i].label,
                        inputValue: resp.data[i].id
                    });
                }
            }
            this.add(checkboxesArr);
        }
    });
}

Рабочий пример: https://fiddle.sencha.com/

Другие вопросы по тегам