ExtJS将自定义验证移动到外部文件

ExtJS moving custom validations to external files

本文关键字:外部 文件 移动 验证 自定义 ExtJS      更新时间:2023-09-26

我的一些验证在不同的视图中重复。我想把它们移到外部文件中,以便于重用。举个例子,我希望能够使用这样的东西:

Ext.apply(Ext.form.field.VTypes, Ext.custom.validations.Oib);

而不是像这样对VTypes单例应用验证:

Ext.apply(Ext.form.field.VTypes, {
    oib: function(val, field) {
        oib = val.toString();
        if (oib.length != 11) return false;
        var b = parseInt(oib, 10);
        if (isNaN(b)) return false;
        var a = 10;
        for (var i = 0; i < 10; i++) {
        a = a + parseInt(oib.substr(i, 1), 10);
        a = a % 10;
        if (a == 0) a = 10;
        a *= 2;
        a = a % 11;
        }
        var control = 11 - a;
        if (control == 10) control = 0;
        return control == parseInt(oib.substr(10, 1));
    },
    oibText: 'Wrong oib.',
    oibMask: /['d]/i
});

如何做到这一点?

如果将验证添加到singleton Ext.form.field.VTypes中,它们将可以在任何地方访问。不那么问题出在哪里呢?

我能够用大约这个来做我需要的事情:

将我的文件放入

/ext4/custom

首先定义外部文件的路径。

Ext.Loader.setConfig({
    enabled : true,
    paths : {
    'custom' : '/ext4/custom'
    }
});

需要文件

Ext.require([ 'Ext.*', 'custom.validations.Oib' ]);

最后,将验证应用于singleton:

Ext.apply(Ext.form.field.VTypes, Ext.create('custom.validations.Oib'));