我正在使用Extjs 4.1.1。因为我跟随MVC我决定移动'编辑'&来自网格的'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'不存在时触发。有人有同样的问题吗?当然,旧的网格监听器就像两种方式一样正常。
修改 我刚刚观察到如果我在this.control()中首先定义'beforedit'并且第二次'edit',那么'beforeedit'就是那个没有触发的那个。
答案 0 :(得分: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'