Extjs布局——layout: 'card'

先看下此布局的特性:

下面演示一个使用layout: 'card'布局的示例(从API copy过来的)——导航面板(注:导航面板切换下一个或上一个面板实际是导航面板的布局--layout调用指定的方法。)

    //导航
    var navigate = function(panel, direction){//panel:导航面板;direction:layout调用的方法
        // 此程序可以包含一些控制导航步骤的必要业务逻辑. 比如调用setActiveItem, 管理导航按钮的状态,
        // 处理可能出现的分支逻辑, 处理特殊操作像取消或结束等等. 一个完整的向导页, 对于复杂的需求
        // 实现起来可能也会相当复杂, 在实际的程序中通常应该以继承CardLayout的方式来实现.

        /**
         * 获取导航面板的布局
         */
        var layout = panel.getLayout();
        /**
         * 导航面板切换至下一个组件或上一个组件
         *
         * 此语句是调用layout的某个方法。注意:因为layout所调用的方法名是变量,所有用layout[methodName]()这种形式。
         * 示例:如direction为"next",则此语句等同于:layout.next();将布局的激活(可见)组件切换到下一个.
         */
        layout[direction]();
        /**
         * 设置导航面板的bbar中的按钮状态
         *
         * getCmp:通过id查找现有的Component.返回:Ext.Component。 --Ext
         * setDisabled(Boolean disabled ):启用或者禁用当前组件. --Ext.Component
         * getPrev():返回布局中当前激活(可见)组件的上一个组件.返回:Ext.Component。 --Ext.layout.container.Card
         */
        Ext.getCmp('move-prev').setDisabled(!layout.getPrev());//如果当前Panel的当前激活组件没有上一个组件,则设置'move-prev'按钮为禁用。
        Ext.getCmp('move-next').setDisabled(!layout.getNext());//如果当前Panel的当前激活组件没有下一个组件,则设置'move-next'按钮为禁用。
    };

    //创建导航面板
    Ext.create('Ext.panel.Panel', {
        title: 'Example Wizard',
        width: 300,
        height: 200,
        layout: 'card',
        bodyStyle: 'padding:15px',
        defaults: {
            // 应用到所有子面板
            border: false
        },
        // 这里仅仅用几个按钮来示例一种可能的导航场景.
        bbar: [//工具栏的默认类型是按钮
            {
                id: 'move-prev',
                text: 'Back',
                xtype: 'button',
                handler: function(btn) {//Ext.button.Button-cfg-handler
                    navigate(btn.up("panel"), "prev");//up方法:沿着 ownerCt 查找匹配简单选择器的祖先容器——即本示例创建的Panel
                },
                disabled: true
            },
            '->', // 一个长间隔, 使两个按钮分布在两边
            {
                id: 'move-next',
                text: 'Next',
                handler: function(btn) {//btn:This button.
                    navigate(btn.up("panel"), "next");
                }
            }
        ],
        // 布局下的各子面板
        items: [{
            id: 'card-0',
            html: '<h1>Welcome to the Wizard!</h1><p>Step 1 of 3</p>'
        },{
            id: 'card-1',
            html: '<p>Step 2 of 3</p>'
        },{
            id: 'card-2',
            html: '<h1>Congratulations!</h1><p>Step 3 of 3 - Complete</p>'
        }],
        renderTo: Ext.getBody()
    });

效果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值