1

我正在使用 Extjs 4.1.1。因为我遵循 MVC,所以我决定从网格中移动 'edit' 和 'beforeedit' 函数(rowEditing 插件),即:

listeners: {'edit': function(editor, e) {
    ...
    },'beforeedit': function(editor, e) {
    ...
    }}

并将其放入控制器中,就像: Ext JS 4 - How to control rowEditor inside controller

我的新代码如下所示:

init: function() {

    this.control({          

        'myGrid': {
            edit: this.onRowEdit
        },

        'myGrid': {
            beforeedit: this.onRowBeforeEdit
        },

    });

},

onRowEdit: function(editor, e) {
    ... // Fires only when 'beforeedit' not present in this.control
},

onRowBeforeEdit: function(editor, e) {
    ... // Always fires
},

现在,'beforeedit' 触发良好。我的问题是只有在不存在“beforeedit”时才会触发“edit”。有人有同样的问题吗?当然,像旧网格监听器这样的方式对两者都适用。

编辑 我刚刚观察到,如果我在 this.control() 中首先定义“beforedit”,然后定义“编辑”,则“beforeedit”是不触发的。

4

1 回答 1

3

将它们放在同一个选择器中:

init: function() {

    this.control({          

        'myGrid': {
            edit: this.onRowEdit,
            beforeedit: this.onRowBeforeEdit
        }    
    });

}

如果我这样做,那也是同样的问题:

var name = {
   first: 'John',
   first: 'Doe'
};
alert(name.first); //will show a messagebox with 'Doe'
于 2012-11-07T12:44:43.367 回答