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'));