基本上只是想在窗口关闭后创建一个新的hashmap,因为它在关闭并呈现一个新窗口后仍然会有旧的值。
data: {
classCheck: false,
hashTable: new Ext.util.HashMap(),
countValid: 0
}
listeners: {
afterrender: function() {
var scope = this;
window.addEventListener('resize', function() {
scope.updateWindow(scope);
});
this.on('close', function(scope) {
this.getViewModel().data.hashTable = new Ext.util.HashMap();
window.removeEventListener('resize', scope.updateWindow);
});
},
},
renderer: function(value, cell_field1, cell_field2, cell_field3) {
var hashmap = this.up('classroom').getViewModel().data.hashTable;
答案 0 :(得分:0)
JavaScript使用prototyping来实现类继承。窗口是窗口类的实例,由于原型设计的性质,窗口实例引用了类上定义的属性,直到实例显式设置它们为止。
Ext.define('Fiddle.Class', {
boolean: true,
object: {},
constructor: function() {
/* 1. Instance Prototype
{ {
boolean: true,
object: {}
} }
*/
this.boolean = false;
this.object.key = false;
this.object = {};
/* 2. Instance Prototype
{ {
boolean: false, boolean: true,
object: { key: true } object: { key: false },
instance: null
} }
*/
// This returns true.
return this.object.key;
}
});
因此,窗口实例需要在初始化期间设置作为对象或数组的属性的值,以便每个实例都获得自己的副本。这可以在类上定义,通常在构造函数中完成,以便尽可能早地获得数据。
Ext.define('Fiddle.window.Window', {
extend: 'Ext.window.Window',
data: null,
constructor: function(config) {
this.data = {
classCheck: false,
hashTable: new Ext.util.HashMap(),
countValid: 0
};
this.callParent(arguments);
}
});