我一直在关注这个例子:http://dev.sencha.com/deploy/ext-4.0.2a/examples/dd/dnd_grid_to_grid.html
因此,在我的应用程序版本中,我尽可能地遵循 MVC 约定。与上面的示例一样,我的 View 包含捕获“drop”事件的监听器。这很好用。
但是我怎样才能提取这个事件处理程序,以便我可以将所有“代码”保存在 Controller 中?
我的 Controller :
Ext.define('AM.controller.Cards', {
extend: 'Ext.app.Controller',
stores: ['BacklogCards', 'InprogressCards', 'ReviewCards', 'DoneCards', 'Priorities', 'Sizes'],
models: ['Card', 'Priority', 'Size'],
views: ['card.List', 'priority.prioritycombo'],
init: function () {
this.control({
'cardlist dataview': {
itemdblclick: this.editUser
},
'cardlist': {
edit: this.inlineUpdateUser,
drop: this.dropit
}
});
},
dropit: function () {
alert("in");
},
我希望这会奏效,但 drop 事件处理程序似乎只能在 View 中工作。
View :
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragGroup: 'firstGridDDGroup',
dropGroup: 'firstGridDDGroup'
},
listeners: {
drop: function (node, data, dropRec, dropPosition) {
var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';
alert("Drag from right to left " + data.records[0].get('name') + " " + dropOn);
}
}
},
最佳答案
如果放置事件在放入“cardList 数据 View ”部分的数据 View 中有效
init: function () {
this.control({
'cardlist dataview': {
itemdblclick: this.editUser,
drop: this.dropit
},
'cardlist': {
edit: this.inlineUpdateUser
}
});
},
关于javascript - 将 extjs drop 事件监听器放在 Controller 而不是 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602781/