在窗口的before render事件中。我有这个代码
Ext.define('Ext.view.ReaderWindow', {
extend: 'Ext.window.Window',
alias: 'widget.reader',
id1: 0,
file_path: '',
id: 'reader',
itemId: 'reader',
maxHeight: 800,
maxWidth: 900,
minHeight: 300,
minWidth: 500,
layout: {
type: 'anchor'
},
title: 'File Reader',
modal: true,
initComponent: function() {
var me = this;
Ext.applyIf(me, {
items: [{
xtype: 'form',
anchor: '100% 100%',
itemId: 'reader_form',
maxHeight: 800,
maxWidth: 900,
minHeight: 300,
minWidth: 500,
autoScroll: true,
bodyPadding: 10,
items: [{
xtype: 'displayfield',
anchor: '100%',
itemId: 'file_contents',
maxWidth: 900,
minWidth: 50,
hideLabel: true,
name: 'file_contents'
}]
}],
listeners: {
beforerender: {
fn: me.reader_windowBeforeRender,
scope: me
}
}
});
me.callParent(arguments);
},
reader_windowBeforeRender: function(component, eOpts) {
Ext.model.FileReaderModel.load(this.id1, {
params: {
'file': this.file_path
},
success: function(file_reader) {
var form_panel = current.query('#reader_form');
var contents_field = form_panel[0].getComponent('file_contents');
var contents = file_reader.get('file_contents');
var pattern = /(\/.*?\.\S*)/gi;
contents = contents.replace(pattern, "<a href='#' class='sample'>$1</a>");
contents_field.setValue('<pre>' + contents + '</pre>');
Ext.select('.sample').on('click', function() {
var path = this.innerHTML;
var Id1 = this.id1;
var reader = Ext.create('Ext.view.ReaderWindow', {
id1: Id1,
file_path: path
});
reader.show();
});
},
failure: function(file_reader, response) {
}
});
},
});
用于&#34;标签&#34;我已经分配了&#34;样本&#34;类。单击链接时,它会打开一个新窗口(但同一窗口用于显示内容)。
问题是如果我第一次点击一个标签,那么点击就会被调用一次。然后我关闭窗口并再次点击标签..这次它会发射两次。因此,根据我打开和关闭的次数,点击事件会被调用很多次。
看起来每次打开窗口时,同一事件都会多次注册。但是我想只注册一次这个事件。任何时候我点击一个链接,只有一次它应该调用点击事件。