gpt4 book ai didi

javascript - 如何在 sencha touch/ext js 模型中编写验证

转载 作者:行者123 更新时间:2023-11-28 01:33:52 25 4
gpt4 key购买 nike

我有一个这样的模型

Ext.define('app.model.TeamEmpAssignment', {
extend : 'Ext.data.Model',
config : {
idProperty : 'teamEmpId',
fields : [{
name : 'teamEmpId',
type : 'int'
}, {
name : 'actName'
}, {
name : 'beginDateTime'
}, {
name : 'endDateTime'
},

],

validations : [{
field : 'beginDateTime',
type : 'presence',
message : 'Effective Begin Date Time required'
}, {
field : 'endDateTime',
type : 'presence',
message : 'Effective End Date Time required'
},
],

}

});

我必须编写一个验证来比较 endDateTime > startDateTime

我正在尝试 sencha touch 2.3.1

最佳答案

我知道这是一个老问题,但我在处理同样的问题时遇到了它,并想分享我的方法。

我在模型中创建了一个方法,它执行自定义验证,例如:

Ext.define('app.model.TeamEmpAssignment', {
extend : 'Ext.data.Model',
config : {
// config here
},

checkDates: function (errors) {
// assuming the dates are timestamps
if (this.get('beginDateTime') > this.get('endDateTime')) {
errors.add(Ext.create('Ext.data.Error', {
field : 'beginDateTime',
message: 'Begin date can\'t be after end date'
}));
}
}

});

您会注意到 checkDates 有一个参数 - 错误。该参数实际上是模型的 validate 方法返回的 Ext.data.Errors 对象。所以我们可以做这样的事情:

var record = Ext.create('Ext.data.Errors');
// set some values here
var errors = record.validate();
record.checkDates(errors);

console.log(errors.isValid());

我们可以使用 isValid,因为它所做的只是检查 Ext.data.Errors 集合是否有项目。

我目前正在这样使用它,但是重写验证方法将非常容易,因此您不必在外部调用自定义验证。

Ext.define('app.model.TeamEmpAssignment', {
extend : 'Ext.data.Model',
config : {
// config here
},

checkDates: function (errors) {
// assuming the dates are timestamps
if (this.get('beginDateTime') > this.get('endDateTime')) {
errors.add(Ext.create('Ext.data.Error', {
field : 'beginDateTime',
message: 'Begin date can\'t be after end date'
}));
}
},

validate: function () {
var errors = this.callParent(arguments);

this.checkDates(errors);

return errors;
}

});

关于javascript - 如何在 sencha touch/ext js 模型中编写验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21774889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com