javascript - extjs 6.2 现代形式添加自己的验证器

标签 javascript extjs extjs6-modern extjs6.2

如何在 extjs 6.2.0 现代应用程序中添加自己的表单验证器?经典:

validator : function(value){
    //do something
}    

最佳答案

这肯定取决于您想要什么,但例如我最近所做的是使用 ViewModel 绑定(bind)来添加验证器(似乎在经典和现代工具包中都适用)。对于您的需求来说,这肯定可能过于复杂,但看起来 ViewModel 与公式的绑定(bind)非常适合电子邮件验证。

表格:

Ext.define('App.login.LoginForm', {
    extend: 'Ext.form.Panel',

    requires: [ 'App.login.LoginModel' ],
    viewModel: {
        type: 'login'  // references alias "viewmodel.login"
    },

    layout: 'vbox',
    defaultType: 'textfield',
    items: [{
        name: 'login',
        itemId: 'login-fld',
        bind: '{credentials.login}'
    },{
        inputType: 'password',
        name: 'password',
        bind: '{credentials.password}'
    },{
        xtype: 'button',
        text: 'Submit',
        action: 'save',
        bind: {
            disabled: '{!isCredentialsOk}'
        }
    }]
});

View 模型:

Ext.define("App.login.LoginViewModel", {
    extend: "Ext.app.ViewModel", 
    alias: 'viewmodel.login',

    links: {
        credentials: {
            reference: 'App.login.LoginModel',
            create: true
        }
    },

    formulas: {
        isCredentialsOk: function (get) {
            return Boolean(get('credentials.login') && get('credentials.password'));
        }
    }

});

型号:

Ext.define('App.login.LoginModel', {
    extend: 'Ext.data.Model',

    fields: [
        {   name:   'login',    type: 'string', allowBlank: false   },
        {   name:   'password', type: 'string', allowBlank: false   }
    ],

    validators: [
        {   field: 'login',     type: 'presence',   message: 'Login empty'  },
        {   field: 'password',  type: 'presence',   message: 'Password empty'   }
    ]
});

关于javascript - extjs 6.2 现代形式添加自己的验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987113/

相关文章:

javascript - 将 php 变量传递给 joomla 中的 javascript

当我在页面底部加载 JavaScript 文件(excanvas)时,它不起作用

javascript - 如何在表格中找到最后一个可见的 <td>?

javascript - 如何将 JSON 对象从 Java/Prime Faces 传递到 GOJS javascript 文件

php - IE :"This.container"为 null 或不是对象

css - 无法使用 actioncolumn 和 iconCls 从字体库呈现图标

javascript - Sencha Touch 日历,添加更多停靠项目时列表消失

extjs - 防止在 ExtJS 中按 Enter 键在表单字段上重新加载页面

javascript - extjs。如何更改 Ext.field.DatePicker 的数据格式

javascript - 现代版本 EXT JS 6.2.0 中的 loadRecord() 方法