javascript - 将 extjs drop 事件监听器放在 Controller 而不是 View 中

标签 javascript extjs extjs4 dom-events

我一直在关注这个例子: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/

相关文章:

javascript - 不同组件上的单个或多个商店实例?

javascript - 按投资组合项目类型过滤

css - 在 Sencha ExtJS 框架中应该删除什么 CSS 类的组件事件? (烦人的红线)

javascript - 在 Windows 上使用meteor.js 和 mongoDB

javascript - Extjs:如何使用网格行选择中的值填充表单

javascript - 自动修改jquery数据表而不是点击

php - 从 PHP 生成 Javascript/ExtJS 代码的最可维护的方法是什么?

javascript - extjs 4 文本区域自动完成/建议

javascript - 如何阻止用户重复单击 jQuery AJAX 调用?

javascript - 如何避免 div 元素在拖动过程中重叠?