2016-12-23 3 views
2

Ich habe eine Aurelia App und verwende das Aurelia-Validierungstool für die clientseitige Validierung. Ich möchte das validationMessages Wörterbuch verwenden, um eine Liste der benutzerdefinierten Validierung Nachrichten zu definieren, während meiner App verwenden withMessageKey mit etwa so:Verwendung von mitMessageKey für benutzerdefinierte Validierungsnachrichten in Aurelia

import {validationMessages} from 'aurelia-validation'; 

validationMessages['customMessage1'] = `My first custom message`; 
validationMessages['customMessage2'] = `My second custom message`; 

Und dann, wenn ich die Validierungsregeln für die Klasse festgelegt:

import { ValidationRules } from "aurelia-validation"; 

export class SampleObject { 
    text1; 
    text2; 

    constructor() { 
     ValidationRules 
      .ensure(a => a.text1) 
       .required() 
        .then().satisfies(x => x.trim() === x) 
        .withMessageKey('customMessage1') 
      .ensure(a => a.text2) 
      .satisfies(x => x.length > 5) 
       .withMessageKey('customMessage2') 
      .on(this); 
    } 
}; 

Die Validierung funktioniert, aber die benutzerdefinierten Nachrichten werden nicht angezeigt, die Standardnachrichten nicht. Wenn ich zum Beispiel stattdessen withMessage('My first custom message') verwende, funktioniert es zwar, aber ich möchte alle meine benutzerdefinierten Nachrichten für die Verwendung in der gesamten App an einem Ort aufbewahren.

Was mache ich falsch?

+0

In welcher Datei definieren Sie Ihre benutzerdefinierten Nachrichten? Sind Sie sicher, dass die Datei geladen ist? Können Sie versuchen, die benutzerdefinierten Nachrichten in derselben Datei zu speichern, in der Sie Ihre Validierungsregeln deklarieren? – nemesv

+0

Ich habe versucht, die benutzerdefinierten Nachrichten in eine separate Datei in derselben Datei wie die Klasse (aber außerhalb der Klasse) und innerhalb des Ansichtsmodells, in dem die Klasse verwendet wird, zu setzen. Keine davon funktioniert. Ich konnte es zur Arbeit bringen, wenn ich die Validierungsnachrichten innerhalb der Klasse einfüge, aber das ist nicht wirklich das, was ich suche, weil ich sie in der ganzen App verwenden möchte. – yammerade

+0

Kannst du auch versuchen, die 'validationMessages' in deiner Klasse zu importieren ? Ändern Sie Ihre erste Zeile in der Klasse zu importieren ValidationRules, validationMessages} von "aurelia-validation"; – LStarky

Antwort

0

Hier ist meine Lösung ist:

ich eine Klasse erstellt, die meine benutzerdefinierte Nachrichten im Konstruktor enthält:

import { validationMessages } from 'aurelia-validation'; 

export class CustomValidationMessages { 
    constructor() { 
     validationMessages['customMessage1'] = `My first custom message`; 
     validationMessages['customMessage2'] = `My second custom message`; 
    } 
} 
Dann

, ich spritze es in meinen app.js:

import { inject } from 'aurelia-framework'; 
import { CustomValidationMessages } from "resources/utils/validation-messages"; 

@inject(CustomValidationMessages) 
export class App { 
    constructor() { 
    } 
    configureRouter(config, router) { 
     ..... 
    } 
} 

Und Ich bin in der Lage, customMessage1 und customMessage2 überall in meiner App zu verwenden. Ich bin mir nicht sicher, ob dies der beste Weg ist, aber es funktioniert.

Verwandte Themen