Extjs6.2 树 treePanle scrollable属性设置横向滚动条失效问题解决

   如题,最近在学习Extjs时碰到tree panel利用原有的属性scrollable(原来是autoScroll) 设置后横向滚动条失效。看了API、也在网上查了解决方法。均没有作用,后来请教公司的大神之后给出的解决方案是:设置scrollable: false;之后在afterrender里添加方法:

me.view.el.dom.setAttribute('style', 'overflow:auto; margin:0px; width:100%; height:100%;');

ok,问题解决。

 

???很容易是吧。但是我告诉你,如果你的树节点数据多的话,会出现一个恶心的问题,那就是竖向滚动条加载不全....可能是因为在afterrender里的时候树并没有加载完,dom此时设置的滚动条完全是依据于你设置的高度和宽度(我暂且是这样认为的...)。到这个时候你猜测到了原因,问题自然就好解决了。当然你不能因此就设置成store为autoLoad,因为会大大减少页面加载的性能。

查询api之后,我发现另外一个event,afterlayout

listeners: {
        afterlayout:function (me) {
        // treepanel布局的bug,导致不能横向滚动。
        // 必须设置为scrollable: true, 并配合在afterlayout中设置(尝试在afterrender里试用,会出现滚动条不全的情况)
        // `me.view.el.dom.setAttribute('style', 'overflow-x:auto; margin:0px;width:100%; height:100%;');`
        me.view.el.dom.setAttribute('style', 'overflow:auto; margin:0px; width:100%; height:100%;');
    }
},

此时问题完全解决,afterlayout是在每一次treepanel有变化时都会去执行的。但是要注意scrollable不能设置成false了,要设置成true。

demo代码:

Ext.define('xxxxx.PersonalTree', {

    extend: 'Ext.tree.Panel',
    xtype: 'personal-sub-tree',
    border: false,
    animCollapse: true,
    rootVisible: false,
    lines: true,
    useArrows : true,
    scrollable: true,

    store: {
        autoLoad: false,
        proxy: {
            type: 'ajax',
            url:'',
            actionMethods: {
                read: 'POST'
            },
            reader: {
                type: 'json'
            },
            timeout : 120000
        },
        rootProperty: {
            expanded: false
        }
    },
    listeners: {
        afterlayout:function (me) {
            me.view.el.dom.setAttribute('style', 'overflow:auto; margin:0px; width:100%; height:100%;');
        }
    }
});

 

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_JGuo

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值