Extjs 4.1 - CellEditing插件中的Listerning无法在第二次运行

fre*_*yle 1 tree extjs treegrid extjs4.1

我用插件CellEditing 定义了一个treeGrid

Ext.define('MyExample', {
        extend: 'Ext.tree.Panel',   
        id: 'example',
        alias: 'example',
        ....
        plugins: [
            Ext.create('Ext.grid.plugin.CellEditing', {
                clicksToEdit: 1,
                listeners: {
                    beforeedit: function(plugin, edit){
                        alert('don't run second time');
                    }
                }
            })
        ],
        ...
Run Code Online (Sandbox Code Playgroud)

当我点击这个按钮时我会有一个按钮会调用下面的窗口(此窗口上面有treeGrid)

Ext.create('Ext.window.Window', {
title: 'Phân x? lý',
modal:true,
height: 500
width: 500
layout: 'border',
...
item[
 {
  title: 'example',
  region: 'center',
  xtype: 'example', // that here
  layout: 'fit'
 }
]
Run Code Online (Sandbox Code Playgroud)

一切都在第一次工作,但当我第一次关闭窗口,然后单击按钮再次调用窗口,然后CellEditting仍在工作,但听众不工作?
如何解决这个问题

编辑
请参阅我在http://jsfiddle.net/E6Uss/中的 示例代码
第一次点击按钮时.一切运作良好 在此输入图像描述

但是,当我关闭示例窗口并再次打开它时,我尝试再次单击以阻止单元格我得到一个类似的错误 在此输入图像描述


如何解决这个错误?谢谢

Jua*_*res 6

这里的问题是你在插件数组中使用Ext.create作为树网格.这具有创建它一次并将结果adhoc附加到您定义的类的效果.

如果关闭窗口,窗口中的所有资源都将被销毁.第二次实例化树面板时,插件不在那里.看看这个小提琴:我看你的问题是什么.看看http://jsfiddle.net/jdflores/E6Uss/1/

     {
        ptype : 'cellediting',
        clicksToEdit: 1,
        listeners: {
            beforeedit: function(plugin, edit){
                console.log('EDITOR');
                if (edit.record.get('block')) {
                    alert('this cell have been blocked');
                    return false;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)