ExtJS 5:获取定义类的initialConfig
ExtJS 5: Get initialConfig of defined class
我试图获得我在面板中定义和使用的类的initialConfig
。通过初始配置,我的意思是我想要在面板中使用类时设置的内容,以及类的定义值是什么。下面是一个例子:
Ext.define('MyViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.myview',
stores: {
gridStore: {
autoLoad: true,
fields: ['name', 'email', 'phone', 'userval', 'doj'],
proxy: {
type: 'ajax',
url: 'data1.json',
reader: {
type: 'json'
}
}
}
}
});
Ext.define('MyGrid', {
extend: 'Ext.grid.Panel',
xtype: 'myGrid',
viewModel: {
type: 'myview'
},
title: 'Simpsons',
stateful: true,
multiSelect: true,
stateId: 'stateGrid',
closable: true,
bind: {
store: '{gridStore}'
},
columns: [{
text: 'Name',
dataIndex: 'name',
stateId: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1,
stateId: 'email'
}, {
text: 'Phone',
dataIndex: 'phone',
stateId: 'phone'
}, {
text: 'Date of Joining',
dataIndex: 'doj',
flex: 1,
stateId: 'date'
}]
});
Ext.define('MyController', {
extend: 'Ext.app.ViewController',
alias: 'controller.myview'
});
Ext.state.Manager.setProvider(Ext.create('Ext.state.LocalStorageProvider'));
var panel = Ext.create('Ext.panel.Panel', {
title: 'My Panel',
controller: 'myview',
height: 400,
width: 400,
layout: 'fit',
renderTo: Ext.getBody(),
items: [{
xtype: 'myGrid',
reference: 'something'
}],
listeners: {
afterrender: function(panel) {
console.log(panel.lookupReference('something').initialConfig);
}
}
});
输出内容:
Object {
xtype="myGrid",
reference="something"
}
所以在afterrender
处理程序中,当我输出initialConfig
时,我想看看在面板的配置中为我的类设置了什么,以及类的定义属性,如列,标题等。我试着看config
,但这并没有给我列…我意识到我可以直接查看网格的列,但是如果用户更改了其中一个列(隐藏/重新排序),我不希望这些更改。我还能从别的性质上看出来吗?
您可以清除状态并重新配置带有原型列的网格:
var grid = panel.lookupReference('something'),
store = grid.getStore();
// Clear the state of the grid
Ext.state.Manager.clear(grid.stateId);
// Sort the store back to default
store.sort('first', 'ASC');
// Reconfigure the grid
grid.reconfigure(store, grid.self.prototype.columns);
工作示例
https://fiddle.sencha.com/小提琴/tp0
https://fiddle.sencha.com/小提琴/tp1
clear状态的功劳:
https://druckit.wordpress.com/2014/02/14/ext-js-4-grid-state-management/
您可以亲自动手,使用配置对象的自引用自己完成。
Ext.define('MyGrid', {
saveConfigToMyself:function() {
this.originalConfig = this;
return this;
},
extend: 'Ext.grid.Panel',
xtype: 'myGrid',
viewModel: {
type: 'myview'
},
title: 'Simpsons',
stateful: true,
multiSelect: true,
stateId: 'stateGrid',
closable: true,
bind: {
store: '{gridStore}'
},
columns: [{
text: 'Name',
dataIndex: 'name',
stateId: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1,
stateId: 'email'
}, {
text: 'Phone',
dataIndex: 'phone',
stateId: 'phone'
}, {
text: 'Date of Joining',
dataIndex: 'doj',
flex: 1,
stateId: 'date'
}]
}.saveConfigToMyself());
请注意 saveconfigtomself ()声明以及配置对象之后的调用。有些属性在初始化期间丢失(例如"extend"属性),以避免克隆配置。
查看这个工作小提琴:
https://fiddle.sencha.com/小提琴/传真照片
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 未捕获的TypeError无法读取未定义的属性socialsharing
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 定义完全独立的样式信息
- 如何在选项卡上定义属性'的主窗口对象
- ExtJS 5:获取定义类的initialConfig