aurelia-dialogとaurelia-validationを併用しようとしています。私が最初にポップアップを開いたときに、私は検証をトリガする、私は正しいエラーを取得します。私はそのイベントの後、ポップアップを再開するたびに、私はなど、同じ検証は、二回を3回繰り返し取得Aureliaダイアログの反復確認
これは私がdialogService
からのポップアップを呼び出し、ポップアップimport { inject } from 'aurelia-framework';
import { DialogController } from 'aurelia-dialog';
import { ValidationController, ValidationRules } from 'aurelia-validation';
import { MaterializeFormValidationRenderer } from './../resources/elements/materialize-form-validation-renderer';
@inject(DialogController, ValidationController)
export class AddProject {
rules = ValidationRules
.ensure('name')
.required()
.withMessage('Please enter a name for your project.')
.rules;
constructor(dialogController, validationController) {
this.name = '';
this.project = null;
this.dialogController = dialogController;
this.validationController = validationController;
this.validationController.addRenderer(new MaterializeFormValidationRenderer());
}
activate(project) {
this.project = project;
}
detached() {
this.validationController.reset();
}
validateModel() {
return new Promise((resolve, reject) => {
this.validationController.validate().then(v => {
resolve(v.valid);
});
}, function (error) {
reject(error);
});
}
validateProject(e) {
this.validateModel().then(valid => {
if (valid) {
this.project.name = this.name;
this.name = '';
//this.validationController.reset();
this.dialogController.ok(this.project);
}
});
}
cancel(e) {
this.name = '';
//this.validationController.reset();
this.dialogController.cancel();
}
}
ためのビューモデルであります
import { inject } from 'aurelia-framework';
import { DialogService } from 'aurelia-dialog';
import { AddProject } from './add-project';
import { Project } from './project';
@inject(DialogService)
export class ListProjects {
constructor(dialogService) {
this.dialogService = dialogService;
}
createProject() {
var project = new Project();
this.dialogService.open({ viewModel: AddProject, model: project, lock: false }).whenClosed(response => {
if (!response.wasCancelled) {
console.log('good - ', response.output);
}
});
}
}
検証をリセットする方法はありますか。私はthis.dialogController.cancel()で試してみましたが、動作しませんでした。