Ext JS 数据模型(1):创建实例

模型的定义,在Ext JS4中,使用define方法来定义一个模型:

<script type="text/javascript">
  Ext.onReady(function(){
      
/*从Ext JS4.0.0开始 regModel()方法被废弃:
         Ext.regModel("User",{
         fields:[{name:"name",type:"string"},
                 {name:"age",type:"int"},
                 {name:"phone",type:"string"}
         ]
      });
*/
      Ext.define("User",{
          extend:"Ext.data.Model",
          fields:[{name:"name",type:"string"},
                  {name:"age",type:"int"},
                  {name:"phone",type:"string"}
                  ]
      });
      var user = Ext.ModelMgr.create({
          name:"kimi",age:"24"
      },"User");
user.set("phone","123456"); Ext.MessageBox.alert(
"Age",user.get("age")); }); </script>

fields 配置项中的每个field是一个 Ext.data.Field 对象,它不被直接实例化,而是当我们创建一个继承Ext.data.Model的类时,被自动创建,Model中的每个field配置项都会被自动创建一个Ext.data.Field实例。

field的配置:

name : 属性名称

type: 属性的类型,这个字段在将数据转换为特殊格式时使用,type的取值是以下中的一个,

         auto(当没有特殊说明时,即不指定type时)  //{name:"Name"}和{name:"Name",type:"auto"}一样

         int

         float

         string

         date

         boolean

dateFormat : 当type是date时,我们可以用dateFormat来指定转换date数据,这是可选的[注:dateFormat的 格式必须遵守PHP date 格式化规则]

defaultValue: field的默认值,也是可选的

convert: 定制规则转换数据

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {
            name: 'firstName',
            convert: function(value, record) {
                var fullName  = record.get('name'),
                    splits    = fullName.split(" "),
                    firstName = splits[0];

                return firstName;
            }
        },
        'name', 'email',
        {name: 'age', type: 'int'},
        {name: 'gender', type: 'string', defaultValue: 'Unknown'}
    ]
});

检验一下:

var ed = Ext.create('User', {name: "Ki mi"});

Ext.MessageBox.alert("firstName",ed.get('firstName')); 
posted @ 2012-10-19 11:30  kimi希  阅读(1871)  评论(0编辑  收藏