2016-12-23 4 views
2

У меня есть приложение Aurelia, и я использую инструмент проверки Aurelia для проверки на стороне клиента. Я хочу использовать validationMessages словарь, чтобы определить список сообщений пользовательских проверочных использовать в течение моего приложения, используя withMessageKey так:Использование withMessageKey для пользовательских сообщений проверки в Aurelia

import {validationMessages} from 'aurelia-validation'; 

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

И тогда, когда я установил правило проверки на классе:

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

Проверка выполняется, но пользовательские сообщения не отображаются, стандартные. Если вместо этого я использую withMessage('My first custom message'), то он действительно работает, но я хочу сохранить все свои пользовательские сообщения в одном месте для использования во всем приложении.

Что я делаю неправильно?

+0

В каком файле указаны пользовательские настройки? Вы уверены, что файл загружен? Не могли бы вы поместить пользовательские сообщения в тот же файл, где вы объявляете свои правила проверки? – nemesv

+0

Я пробовал помещать пользовательские сообщения в отдельный файл в том же файле, что и класс (но вне класса), и внутри модели представления, в которой используется класс. Ни одна из этих работ не работает. Мне удалось заставить его работать, если я включаю сообщения проверки внутри класса, но это не совсем то, что я ищу, потому что я хочу использовать их во всем приложении. – yammerade

+0

Можете ли вы попробовать также импортировать 'validationMessages' в свой класс ? Измените свою первую строку в классе на 'import {ValidationRules, validationMessages} из« aurelia-validation »;' – LStarky

ответ

0

Вот мое решение:

Я создал класс, который содержит свои собственные сообщения в конструкторе:

import { validationMessages } from 'aurelia-validation'; 

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

Затем я впрыскивать его в мой app.js:

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

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

И Я могу использовать customMessage1 и customMessage2 всюду по моему приложению. Я не уверен, что это лучший способ сделать это, но он работает.