Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ExtJs 6.2中基于Store构建checkboxgroup_Javascript_Extjs_Extjs6 - Fatal编程技术网

Javascript 如何在ExtJs 6.2中基于Store构建checkboxgroup

Javascript 如何在ExtJs 6.2中基于Store构建checkboxgroup,javascript,extjs,extjs6,Javascript,Extjs,Extjs6,是否可以在窗体中从ViewController自动运行方法?我需要创建checkboxgroup,它应该基于来自此控制器的数据。在ViewController中的这个方法中,我从JSON文件中获取数据,并在这里更新一个视图。当我在视图的listener中有一个按钮时,一切都正常,但它应该自动运行,并且复选框应该基于这个存储数据构建 onClickLoadData: function(){ console.log('onClickLoadData runned');

是否可以在窗体中从ViewController自动运行方法?我需要创建checkboxgroup,它应该基于来自此控制器的数据。在ViewController中的这个方法中,我从JSON文件中获取数据,并在这里更新一个视图。当我在视图的listener中有一个按钮时,一切都正常,但它应该自动运行,并且复选框应该基于这个存储数据构建

onClickLoadData: function(){
        console.log('onClickLoadData runned');
        var gridStore =  this.getStore('perosnellstore');
        var columnsArray = this.getStore('perosnellstore').getProxy().getReader().rawData.cols.columns;

        console.log(columnsArray.length);

        for( var i = 0; i < columnsArray.length; i++){
            var checkbox = Ext.create('Ext.form.field.Checkbox', {
                boxLabel: columnsArray[i].text,
                x: 0,
                y: i * 30
            });
            Ext.ComponentQuery.query("#checkBoxGroupModules")[0].add(checkbox);
        }
    }

在viewController中,您可以收听存储。文件:

存储在加载远程数据时触发事件。文件:

侦听存储的加载事件并调用onClickLoadData

代码:


答案是商店里的听众

var myStore = Ext.create('Ext.data.Store', {
  ...
  listeners: {
    'load': {
      fn: function(store, records, success, operations) {
        Ext.each(records, function(rec) {
          console.log(Ext.encode(rec.raw));
        });
      }
    }
  }
  ...
});

你说的自动运行是什么意思?什么时候运行?多少次?一次,加载视图后。我在配置存储时遇到了问题,所以我用这种方式进行了配置,但我不确定这是否正确。我尝试使用initComponent方法,但这个方法是在应用程序启动后调用的。它不起作用:(这个方法不是以这种方式调用的。我不知道为什么。)
Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    listen: {
        store: {
            '#storeId': {
                load: 'onClickLoadData'
            }
        }
    }
});
var myStore = Ext.create('Ext.data.Store', {
  ...
  listeners: {
    'load': {
      fn: function(store, records, success, operations) {
        Ext.each(records, function(rec) {
          console.log(Ext.encode(rec.raw));
        });
      }
    }
  }
  ...
});