Sencha Touch - 模型

模型基本上是数据或字段的集合,单独用于存储某些特定类型的信息。

由于 Sencha 遵循基于基础的架构,因此可以自定义类来执行特定任务。

Ext.data.Model 是我们在定义任何模型时需要扩展的基类。

定义模型

Ext.define('Student', {
   extend: 'Ext.data.Model', config: {
      fields: [
         { name: 'id', type: 'int' },
         { name: 'name', type: 'string' }
      ]
   }
});

字段

字段用于存储信息,其集合称为模型。

我们主要在模型中定义以下类型的字段 −

  • 整数
  • 字符串
  • 布尔值
  • 浮点数

语法

{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'marks', type: Float },
{ name: 'newStudent', type: 'boolean' }

验证器

在 Sencha Touch 中,模型支持多种验证,以确保数据正确格式。

以下是验证器 −

  • 存在 − 确保名称字段没有空值。

  • 长度 − 限制字段的长度。它有两个参数 - min 和 max - 定义最小和最大长度。

  • 格式 − 确保字段值符合给定的表达式。在下面的例子中,它不允许我们添加除数字之外的任何值。

  • 包含 − 确保仅列表中定义的值。在下面的例子中,它只允许 M 和 F 作为值。

  • 排除 −确保我们不允许列表数组中定义的值。在下面的例子中,它不允许将零作为年龄。

语法

validations: [
   { type: validation type,  field: on which the validation has to applied }
]
validations: [
   { type: 'presence',  field: 'name' },
   { type: 'length',    field: 'name', min: 5 },
   { type: 'format',    field: 'age', matcher: /\d+/ },
   { type: 'inclusion', field: 'gender', list: ['male', 'female'] },
   { type: 'exclusion', field: 'name', list: ['admin'] }
],

// 现在让我们尝试创建一个新用户,其中包含尽可能多的验证错误
var newUser = Ext.create('User', {
    name: 'admin', age: 'twenty-nine', gender: 'not a valid gender'
});

// 对刚刚创建的新用户运行一些验证
var errors = newUser.validate();

console.log('Is User valid?', errors.isValid());
// 返回"false",因为存在验证错误

console.log('All Errors:', errors.items);
// 返回在此模型实例上发现的所有错误的数组

console.log('Age Errors:', errors.getByField('age')); // 返回年龄字段的错误

sencha_touch_data.html