2016-08-17 2 views
0

Wie kann ich einen eigenen form validator in extjs 6.2.0 moderne anwendung? Im klassischen:extjs 6.2 moderne form hinzufügen eigenen validator

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

Was Sie bisher versucht haben? Und was meinst du mit "nicht arbeiten?" Kannst du Code schreiben? – EJoshuaS

+0

eigentlich mag ich einen benutzerdefinierten Matcher wie eingebauten bauen 'Ext.field.Email' Klasse, aber ich weiß nicht, wie meine Hände zu legen, manchmal denke ich, moderner Toolkit APIs –

Antwort

1

hängt Dies ist sicherlich auf dem, was Sie wollen, aber zum Beispiel was habe ich vor kurzem mit einem Ansichtsmodell wurde das Hinzufügen Validator mit Bindung (scheint in klassischen und modernen Toolkits zu arbeiten). Dies ist für Ihre Anforderungen möglicherweise zu kompliziert, aber es sieht so aus, als ob die Bindung von ViewModel mit Formel gut für die E-Mail-Validierung geeignet ist.

Form:

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

Ansichtsmodell:

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

}); 

Modell:

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' } 
    ] 
}); 
+0

Dank für Ihre Hilfe fehlt , ich markiere es –

+0

Holen Sie sich eine nette Antwort, sagt Danke und dass er es markieren wird und ... niemals akzeptiert oder es hochhebt; ( –