ExtJs4 desktop 开发 桌面图标换行

以下是Ext4 的desktop桌面图标换行问题网上流传的解决方法 (是存在问题的)

init: function() {

this.callParent();

this.initShortcut();

}

注意 自定义函数 init 要放在 callParent 的下面。否则页面初始化的时候。没有换行。只有在变换页面高度的时候,才换行。

initShortcut:function(){

        //shortcuts 自动换行

        var btnHeight = 70;//61

        var btnWidth = 64;

        var btnPadding = 35;//15

        var col = null;

        var row = null;

        function initColRow(){

            col = {

                index: 1, 

                x: btnPadding

            };

            row = {

                index: 1, 

                y: btnPadding

            };

        }

 

        initColRow();

 

        function isOverflow(y){

           //if(y > (Ext.lib.Dom.getViewHeight() - taskbarEl.getHeight())){

            if(y>Ext.get('ext-gen1003').getHeight()-Ext.get('taskbar-1024').getHeight()){

                return true;

            }

            return false;

        }

        this.setXY = function(item){

            var bottom = row.y + btnHeight,

            overflow = isOverflow(row.y + btnHeight);

            if(overflow && bottom > (btnHeight + btnPadding)){

                col = {

                    index: col.index++, 

                    x: col.x + btnWidth + btnPadding

                };

                row = {

                    index: 1,

                    y: btnPadding

                };

            }

            Ext.fly(item).setXY([

                col.x

                , row.y

                ]);

            row.index++;

            row.y = row.y + btnHeight + btnPadding;

        };

        this.handleUpdate = function(){

            initColRow();

            //var items=shortcuts.dom.children;

            var items = Ext.query(".ux-desktop-shortcut"); 

            for(var i = 0, len = items.length; i < len; i++){

                this.setXY(items[i]);

            }

        }

        this.handleUpdate();

        //每过 500 毫秒重绘页面

        Ext.EventManager.onWindowResize(this.handleUpdate, this, {

            delay:500

        });

    //end shortcuts 自动换行

    }

    问题:

    依据此方法修改后,当浏览器窗口大小改变后桌面图标才会换行显示,第一次进入应用程序后桌面图标任然没有换行显示

  

    解决方法:

      在this.handleUpdate(); 后加

    Ext.Function.defer(this.handleUpdate, 500, this, []);


你可能感兴趣的:(浏览器,function,ext,null,ExtJs,delay)