ExtJs 6.2中如何基于Store构建checkboxgroup
How to build checkboxgroup based on Store in ExtJs 6.2
是否可以在表格中自动 运行 来自 ViewController 的方法?我需要创建应该基于来自该控制器的数据的复选框组。在 ViewController 中的这个方法中,我从 JSON 文件中获取数据,在这里我更新了一个视图。当我在视图中的侦听器中有一个按钮时,一切正常,但它应该 运行 自动,并且复选框应该基于此商店数据构建
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);
}
}
和 ViewModel class:
Ext.define('Message.web.view.edit.EditViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.edit',
data:{
title: ''
},
stores : {
perosnellstore: {
fields : ['name'],
autoLoad: true,
proxy: {
type: 'ajax',
url : 'resources/response.json',
reader: {
type: 'json',
rootProperty: 'cols.columns',
keepRawData: true
}
}
}
}
});
在viewController你可以听一家店。文档:http://docs.sencha.com/extjs/6.2.0/classic/Ext.app.ViewController.html#cfg-listen
加载远程数据时,商店会触发一个事件。文档:http://docs.sencha.com/extjs/6.2.0/modern/Ext.data.Store.html#event-load
监听store的load事件,调用onClickLoadData。
代码:
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));
});
}
}
}
...
});
是否可以在表格中自动 运行 来自 ViewController 的方法?我需要创建应该基于来自该控制器的数据的复选框组。在 ViewController 中的这个方法中,我从 JSON 文件中获取数据,在这里我更新了一个视图。当我在视图中的侦听器中有一个按钮时,一切正常,但它应该 运行 自动,并且复选框应该基于此商店数据构建
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);
}
}
和 ViewModel class:
Ext.define('Message.web.view.edit.EditViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.edit',
data:{
title: ''
},
stores : {
perosnellstore: {
fields : ['name'],
autoLoad: true,
proxy: {
type: 'ajax',
url : 'resources/response.json',
reader: {
type: 'json',
rootProperty: 'cols.columns',
keepRawData: true
}
}
}
}
});
在viewController你可以听一家店。文档:http://docs.sencha.com/extjs/6.2.0/classic/Ext.app.ViewController.html#cfg-listen
加载远程数据时,商店会触发一个事件。文档:http://docs.sencha.com/extjs/6.2.0/modern/Ext.data.Store.html#event-load
监听store的load事件,调用onClickLoadData。
代码:
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));
});
}
}
}
...
});