首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sencha Ext JS 4拖拽问题使其正常工作

Sencha Ext JS 4拖拽问题使其正常工作
EN

Stack Overflow用户
提问于 2012-01-28 01:15:35
回答 1查看 1.5K关注 0票数 1

我正在尝试学习extjs 4,在过去的几天里,我一直在挣扎于拖放。我尝试用一个视窗和一个面板构建一个简单的应用程序。我已经将面板设置为可拖动: true,并将viewport设置为下拉区域。当我试图在视口周围拖动面板时,它会不稳定地跳起来。

这是一个简短的视频剪辑的行为:http://youtu.be/6WRf5j_CAR0

这是我的两个文件: app.js

代码语言:javascript
复制
Ext.Loader.setConfig({
    enabled: true
});

Ext.application({
    name: 'CS',

    appFolder: 'ccms/app',
    autoCreateViewport: true,

    controllers: [
    //    'TestCreator',
       //    'Primary',
    //    'Manager'
    ],

    launch: function(){

        var viewport = Ext.ComponentQuery.query('viewport');

        if(viewport.length > 0)
            viewport[0].add([{
                xtype: 'panel',
                width: 300,
                height: 300,
                draggable: true
            }]);

    }
});

Viewport.js

代码语言:javascript
复制
Ext.define('CS.view.Viewport', {
    extend: 'Ext.container.Viewport',
//    layout: 'fit',

    listeners: {
        render: function(sender){

            console.log(sender);

            sender.dropZone = new Ext.dd.DropZone(sender.container, {

                getTargetFromEvent: function(e) {

                    console.log('getTargetFromEvent');

                    var temp = {
                        x: e.getX() - this.DDMInstance.deltaX,
                        y: e.getY() - this.DDMInstance.deltaY
                    };

                    console.log(temp);
                    return temp;

                },

                // On entry into a target node, highlight that node.
                onNodeEnter : function(target, dd, e, data){
                //    Ext.fly(target).addCls('my-row-highlight-class');
                },

                // On exit from a target node, unhighlight that node.
                onNodeOut : function(target, dd, e, data){
                //    Ext.fly(target).removeCls('my-row-highlight-class');
                },

                onNodeOver : function(target, dd, e, data){
                    return Ext.dd.DropZone.prototype.dropAllowed;
                },

                onNodeDrop : function(target, dd, e, data){

                    console.log('onNodeDrop');
                    data.panel.setPosition(target.x, target.y, true);
                    return true;

                }
            });



        }
    }

})

index.html

代码语言:javascript
复制
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Cobar Systems Continuity Suite</title>

    <link rel="stylesheet" type="text/css" href="http://themis.dev/ccms/resources/css/ext-all.css">
    <script type="text/javascript" src="http://themis.dev/ccms/extjs/bootstrap.js"></script>
    <script type="text/javascript" src="http://themis.dev/ccms/app.js"></script>


</head>
<body>
</body>
</html>

有人能告诉我发生了什么事吗?

我在ExtJS4.07和4.1 Beta中尝试过这一点,结果相同。

EN

回答 1

Stack Overflow用户

发布于 2013-07-05 07:01:43

确保将Panel更改为DOM元素,尽管Panel是一个组件

代码语言:javascript
复制
listener: {
render: function (panel) {
    var PanelEl = Ext.get(panel.id);
    sender.dropZone = new Ext.dd.DropZone(PanelEl, {
             //...
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9042124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档