• ExtJS4.2学习(4)——基础知识之Model篇


    本次我们会一起讨论ExtJS基础知识的ModelModel相当于 DB中的table 或 JAVA 中的Class

    我们就以下几点进行讨论,首先是如何创建Model,其次是 Validations验证,再者会简单介绍下一对多等概念。

    一、如何创建Model

    创建Model有几种方式:

    方式一://我们利用Ext.define来创建我们的模型类

    //DB table person(name,age,email)
    Ext.define("person",{//第一个参数是类的名称
    extend:"Ext.data.Model",
    fields:[
    {name:'name',type:'auto'},
    {name:'age',type:'int'},
    {name:'email',type:'auto'}
    ]
    });

    方式二:

    //MVC模式中model一定是M

    Ext.regModel("user",{
    fields:[
    {name:'name',type:'auto'},
    {name:'age',type:'int'},
    {name:'email',type:'auto'}
    ]
    });

    二、实例化Model对象

    除了我们之前说过的newExt.create方法外,在这里还有一种创建Model对象的方法是:

    var p2 = Ext.ModelMgr.create({
    name:'uaa',
    age:26,
    email:'aaa@123.com'
    },'person');//第二个参数是类的名称

    三、Validations验证

    Ext.define("person",{
    extend:"Ext.data.Model",
    fields:[
    {name:'name',type:'auto'},
    {name:'age',type:'int'},
    {name:'email',type:'auto'}
    ],
    validations:[//通过在声明类的时候,添加一些关于验证的方法
      //如下:type就是根据什么来验证 (length长度;age 年龄[自定义])
    //field是对哪个属性进行验证
    //min 最小
    //max 最大
    {type:"length",field:"name",min:2,max:6},
    {type:'age',field:"age",min:0,max:150}
    ]
    });

    源码中的示例:

    四、apply自定义validation方法

    //扩展 也就是我们自定义验证机制的的一个新的验证方法
    //apply :Ext扩展原有对象
    //apply :第一个参数,原有对象;第二个参数,要改造的属性;第三个参数,传入默认的值
    //这个地方我们可以通过看它源码如何写,然后比着写
    Ext.apply(Ext.data.validations,{
    age:function(config, value){
    var min = config.min;
    var max = config.max;
    if(min <= value && value<=max){
    return true;
    }else{
    this.ageMessage = this.ageMessage+"他的范围应该是["+min+"~"+max+"]";
    return false;
    }
    },
    ageMessage:'age数据出现的了错误'
    });

    以上就是给validations对象加了一个参数是age,里边的函数,就是验证逻辑;ageMessage:是说明了错误的提示信息。

    执行验证:

    对象.validate();

    代码如下:

    obj.validate();

    五、Model的一对多和多对一

    Model中有一对多和多对一的配置,这里我们简单的做一下介绍,后边会做详细介绍;

    (function(){
    Ext.onReady(function(){
    //类 老师
    Ext.regModel("teacher",{
    fideld:[
    {name:'teacherId',type:"int"},
    {name:'name',type:"auto"}
    ],
    //设定这两个类之间一对多的关系
    hasMany:{
     model: 'student',
         name : 'getStudent',//如果不写这个name,可以通过t.students得到student的一个数据集合
           	  filterProperty: 'teacher_Id'//关联的字段
    }
    });
    //学生
    Ext.regModel("student",{
    fideld:[
    {name:'studentId',type:"int"},
    {name:'name',type:"auto"},
    {name:"teacher_Id",type:'int'}
    ]
    });
    //t.students 得到子类的一个store数据集合
    })
    })();

    其中就是利用属性hasMany,在代码中有详细解释。

  • 相关阅读:
    kmp 算法
    jdk 和 cglib 的动态代理
    RestTemplate工具类
    bat脚本切换多个工程的分支
    字符串的左旋转
    输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。
    枚举类型在JPA中的使用
    拾遗
    YAML DEMO
    kiali 1.26 anonymous策略修改为token
  • 原文地址:https://www.cnblogs.com/sunyingyuan/p/3686280.html
Copyright © 2020-2023  润新知