extjs-form数据加载

1、form提供了两种加载数据的方式,一个loadData方法加载model,一个是setValues方法加载对象。setValues方法我对其进行了简单的方法封装。

Ext.onReady(function () {
    myform = Ext.create('Ext.form.Panel', {
        title : 'Simple Form',
        bodyPadding : 5,
        width : 350,
        layout : 'anchor',
        frame : true,
        defaults : {
            anchor : '100%'
        },
        defaultType : 'textfield',
        items : [{
                fieldLabel : 'First Name',
                name : 'first',
                allowBlank : false
            }, {
                fieldLabel : 'Last Name',
                name : 'last',
                allowBlank : false
            }
        ],
        buttons : [{
                text : '重置',
                handler : function () {
                    this.up('form').getForm().reset();
                }
            }, {
                text : '保存',
                handler : function () {
                    var form = this.up('form').getForm();
                    if (form.isValid()) {
                        Logger.printf(11)
                    }
                }
            }
        ],
        renderTo : Ext.getBody()
    });
    Ext.define('User',{
        extend : Ext.data.Model,
        fields: [
            {name: 'first',  type: 'string'},
            {name: 'last',   type: 'string'}
        ]
    })
    var UserModel = Ext.create('User');
    UserModel = obj2model({first:'tom',last:'tom'},UserModel    )
    //loadRecord( Ext.data.Model record ) : Ext.form.Basic
    //加载Ext.data.Model到该表单,通过调用setValues与record data。 See also trackResetOnLoad.
    myform.loadRecord(UserModel)
    //obj --> form : void
    obj2form({last:'jerry',first:'lucy'},myform);
})
//obj --> form : void
function obj2form(obj,form){
    if (Ext.isEmpty(obj) || !Ext.isObject(obj)) return;
    var formArr = Ext.Object.getKeys(form.getValues());
    var objArr = Ext.Object.getKeys(obj);
    var o = {};
    Ext.each(objArr,function(item){
        if(Ext.Array.contains(formArr,item)){
            o[item] = obj[item]||''
        };
    });
    if(!Ext.isEmpty(o) && Ext.isObject(o))
    form.getForm().setValues(o);
}


//obj--->model:model
function obj2model(obj, model) {
    if (!model.isModel || Ext.isEmpty(obj) || !Ext.isObject(obj))
        return null;
    var keyarr = Ext.Object.getKeys(model.getData())
        Ext.Object.each(obj, function (key, value, myself) {
            if (Ext.Array.contains(keyarr, key)) {
                if (Ext.isObject(value)) {
                    console.error('Objects can not contain objects');
                    return null;
                }
                model.set(key, value || '')
            }
        });
    return model;
}

//记录器
Ext.define('Logger', {
    singleton : true,
    log : function (msg) {
        console.log(msg);
    },
    error : function (msg) {
        console.error(msg)
    },
    printferror : function (msg) {
        this.error(Ext.id('', 'num:') + '   ' + msg);
    },
    printf : function (msg) {
        this.log(Ext.id('', 'num:') + '   ' + msg);
    },
    printf2 : function (val, msg) {
        this.printf(val + '--' + msg);
    },
    printfobj : function (obj) {
        var s = '';
        if (Ext.isObject(obj)) {
            Ext.Object.each(obj, function (key, value, myself) {
                s += key + ":" + (Ext.isObject(value) ? 'object' : value) + "  ";
            })
        }
        if (s)
            this.printf(s);
    },
    printfarr : function (arr) {
        var s = '';
        Ext.each(arr, function (item) {
            if (Ext.isObject(item)) {
                Ext.Object.each(item, function (key, value, myself) {
                    s += key + ":" + (Ext.isObject(value) ? 'object' : value) + "  ";
                })
            }
        });
        this.printf(s ? s : arr)
    }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值