Ext Js 4.x 扩展自己的XType

本文介绍如何在ExtJS中自定义XType,通过创建一个包含特定属性的Obj实例来扩展Ext.data.Types。示例代码展示了从定义类型、注册类型到在Model和Store中使用该类型的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    如果想用自己定制的XType(比如这里想用一个Obj存el和vl两个属性)     可以自己来扩展Ext.data.Types

 

    大致的流程....

 

  定义类型

 function MyExtType(v, data, name) {
    /**
     * @objEl  第一次v传人为  MyExtType [object] 里面有 vl , el属性
     * 第二次传入时 只传入了vl  这里通过data 再次拿到 el
     */
    var objEL = data.data[name] || {};
    var relV = v==null? '':v;

    this.value = relV.vl==null? relV : relV.vl;

    this.el =  relV.el || objEL.el || '';


    this.toString = function() {
        return this.value;
    }
}

 

    注册类型

 

Ext.data.Types.MyExtType= {
    
    convert: function(v, data) {
     
        return new TsFloatExt(v, data,this.name);
    },
    sortType: function(v) {
        return v.vl;  
    },
    type: 'MyExtType'

};
   

 

     定义Model

 

Ext.define('User', {
            extend: 'Ext.data.Model',
            fields: [
                {name: 'name',  type: 'string'},
                {name: 'email',   type: 'String'},
                {name: 'phone', type:'MyExtType' }
               
            ]
 

    定义Store

 

Ext.create('Ext.data.Store', {
                model:"User",
                data:{'items':[
                    { 	'name': 'Lisa', 
                       'email':'lisa@simpsons.com', 
                       'phone':{'vl':'121121','el':'a+b'}  }

                ]}
});
   

 

 

   当然  你可以写的更加优雅.. 这里只是给出一种实现方法   

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值