2016-12-23 12 views
2

我有一個Aurelia應用程序,我正在使用Aurelia驗證工具進行客戶端驗證。我想用validationMessages詞典定義自定義驗證消息的列表使用withMessageKey像這樣在我的應用程序的使用方法:在Aurelia中使用withMessageKey定製驗證消息

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} from「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) { 
     ..... 
    } 
} 

而且我可以在我的應用程序中隨處使用customMessage1customMessage2。我不確定這是做到這一點的最佳方式,但它有效。