点击时的ExtJs触发窗口打开的次数

时间:2014-03-26 20:00:28

标签: extjs

在窗口的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;类。单击链接时,它会打开一个新窗口(但同一窗口用于显示内容)。

问题是如果我第一次点击一个标签,那么点击就会被调用一次。然后我关闭窗口并再次点击标签..这次它会发射两次。因此,根据我打开和关闭的次数,点击事件会被调用很多次。

看起来每次打开窗口时,同一事件都会多次注册。但是我想只注册一次这个事件。任何时候我点击一个链接,只有一次它应该调用点击事件。

0 个答案:

没有答案