我正在尝试将aurelia-dialog与aurelia-validation一起使用。事情是当我第一次打开弹出窗口并触发验证时,我得到了正确的错误。每当我在该事件之后重新打开弹出窗口时,我会重复两次,三次等同样的验证。
这是弹出窗口的视图模型
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);
}
});
}
}
我从dialogService
调用弹出窗口{{1}}
知道如何重置验证吗?我尝试使用this.dialogController.cancel(),但它没有用。
答案 0 :(得分:0)
每次创建新的AddProject模式时,都需要使用新实例将ValidationController绑定到对话框容器上下文。
尝试添加
@inject(DialogController, NewInstance.of(ValidationController))
而不仅仅是
@inject(DialogController, ValidationController)
NewInstance
可以在aurelia-dependency-injection
中找到(也可能通过aurelia-framework
公开)
即:
import {inject, NewInstance} from 'aurelia-dependency-injection';
有关更多信息,请查看Aurelia Doc Hub(http://aurelia.io/hub.html#/doc/article/aurelia/validation/latest/validation-basics/12)