Aurelia对话重复验证

时间:2017-08-05 20:08:36

标签: javascript validation aurelia aurelia-validation

我正在尝试将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(),但它没有用。

1 个答案:

答案 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