zoukankan      html  css  js  c++  java
  • extjs模板的使用:Ext.XTemplate

    Js代码

    Ext.onReady(function(){
        Ext.onReady(function(){
            //定义模板 使用标签tpl和操作符for
            var tpl1 = new Ext.XTemplate(
                '<table border=1 cellpadding=0 cellspacing = 0>',
                '<tr><td width=90 >姓名</td><td width=90 >年龄</td></tr>',
                '<tpl for=".">',
                '<tr><td>{name}</td><td>{age}</td></tr>',
                '</tpl>',
                '</table>'
            );
            
            //通过自定义格式化函数解析json对象  {stature:this.parseJson()}
            var tpl2 = new Ext.Template(
                '<table border=1 cellpadding=0 cellspacing = 0>',
                '<tr><td width=90 >姓名</td>',
                '<td width=120>{name}</td></tr>',
                '<tr><td width=90 >年龄</td>',
                '<td width=120>{age}</td></tr>',
                '<tr><td width=90 >身高</td>',
                '<td width=120>{stature:this.parseJson()}</td></tr>',
                '</table>'
            );
            
            tpl2.parseJson = function(json){
                return json.num + json.unit;
            }
            
        //数组索引与简单数学运算 {#}    每一项都加上序号
         var tpl3 = new Ext.XTemplate(
             '<table border=1 cellpadding=0 cellspacing = 0>',
             '<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
             '<tpl for=".">',
             '<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',
             '</tpl>',
             '</table>'
         );
        
         //自动渲染简单数组  使用特殊变量{.}可循环输出
         var tpl4 = new Ext.XTemplate(
             '<table border=1 cellpadding=0 cellspacing = 0>',
                '<tr><td>序号</td><td width=90 >姓名</td></tr>',
                '<tpl for=".">',
                '<tr><td>{#}</td><td>{.}</td></tr>',
                '</tpl>',
                '</table>'
         );
        
         //基本的条件逻辑判断  这没有else的操作符 如需要,就要写两个逻辑相反的if的语句
         //输出工资大于1000的员工信息 工资 * 0.9
         var tpl5 = new Ext.XTemplate(
             '<table border=1 cellpadding=0 cellspacing = 0>',
             '<tr><td>序号</td><td width=90 >姓名</td><td width=90 >工资</td></tr>',
             '<tpl for=".">',
             '<tpl if="wage &gt; 1000">',
             '<tr><td>{#}</td><td>{name}</td><td>{wage * .9}</td></tr>',
             '</tpl>',
             '</tpl>',
             '</table>'
         );
        
             //定义组合框模板  xindex:若是循环模板,这是当前循环的索引index(从1开始)。
             //               values:当前作用域下的值    
            var itemTpl = new Ext.XTemplate(
                '<tpl for=".">',
                '<div class="x-combo-list-item {[xindex % 2 == 0 ? "even" : "odd"]}">',
                '{#} :{[this.check(values)]}</div>',
                '</tpl>',
                {
                    check : function (values) {
                        if(values.value > 2 ){
                            return "<font color=red>"+values.item+"</font>";
                        }else {
                            return "<font color=blue>"+values.item+"</font>";
                        }
                    }
                }
            )
            new Ext.form.FormPanel({
                applyTo :'target',
                title:'在Extjs组件中使用模板',
                labelSeparator :':',//分隔符
                height : 100,
                frame : true,
                width : 350,
                items : [
                    new Ext.form.ComboBox({
                        fieldLabel:'combo',
                        displayField:'item',
                        valueField:'value',
                        tpl : itemTpl,//引入自定义模板
                        editable : false,
                        mode: 'local',
                        triggerAction: 'all',
                        store : new Ext.data.SimpleStore({
                            fields: ['item','value'],
                            data : [['条目1',1],['条目2',2],['条目3',3],
                                    ['条目4',4],['条目5',5],['条目6',6]]
                        })
                    })
                ]
            });
        
        
            var productTpl = new Ext.XTemplate(
                '<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>'
            );
            Ext.get('addProduct').on('click',function(){
                var pname = Ext.get('productName').getValue();
                var pnum = Ext.get('productNum').getValue();
                var pprice = Ext.get('productPrice').getValue();
                productTpl.append('product-table',[pname,pnum,pprice]);
            });
        
         //定义模板数据
            var data1 = [
                {name:'张三',age:20},
                {name:'李四',age:25},
                {name:'王五',age:27},
                {name:'赵六',age:26}
            ];
            
            var data2 = {
                name : 'tom',
                age : 24,
                stature : {
                    num : 170,
                    unit : '厘米'
                }
            };
            
            var data3= [
                    {name : '张三',wage : 1000},
                    {name : '李四',wage : 1200},
                    {name : '王五',wage : 900},
                    {name : '赵六',wage : 1500}
                ];
            
            var data4 = ['张三','李四','王五','赵六'];
            
            
            //模板值和模板进行组合并将新生成的节点插入到id为'tpl-table'的元素中
            tpl1.append('tpl-1',data1);
            tpl2.append('tpl-2',data2);
            tpl3.append('tpl-3',data3);
            tpl4.append('tpl-4',data4);
            tpl5.append('tpl-5',data3);
        });
    });

     

    Html代码:

    <div id='tpl-1'></div>

        <br>
        <div id="tpl-2"></div>
        <br>
        <div id="tpl-3"></div>
        <br>
        <div id="tpl-4"></div>
        <br>
        <div id="tpl-5"></div>
        <br>
        <div id="target"></div>
        <br>
        产品名称:<input type="text" id="productName"><br>
        产品数量:<input type="text" id="productNum"><br>
        产品价格:<input type="text" id="productPrice">
        <input type="button" value="增加产品" id='addProduct'>
        <table id='product-table' border=1 cellspacing=0 cellpadding=0>
            <tr>
                <td width=160>产品名称</td><td width=75>数量</td><td width=75>金额</td>
            </tr>
        </table>
  • 相关阅读:
    数据库时间类型
    【西瓜视频】帮妈妈下载广场舞健身操视频
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Ocelot+Polly缓存、限流、熔断、降级
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocelot+Consul
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现
    .NET5修改配置不重启自动生效
    RabbitMQ从零到集群高可用.NetCore(.NET5)-高可用集群构建落地
    Redis初步使用记录
    NPM 错误收集及解决方法
    挪动了一个if语句的位置,运行速度大幅提升
  • 原文地址:https://www.cnblogs.com/hannover/p/1943501.html
Copyright © 2011-2022 走看看