2016-11-30 7 views
0

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

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

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'}   
    ];*/ 
} 

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

Благодаря

ответ

3

Аякса вызов является асинхронным, так что вы можете 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/#view/editor&fiddle/1lgc

Смежные вопросы