定义模型及其验证的正确方法是什么?

时间:2016-04-13 16:01:32

标签: validation aurelia

我想创建一个供应商模型,即代码,名称,地址,电话

我也将使用aurelia验证类。

将它们与viewmodel一起使用 - SupplierMaint.js& view - SupplierMaint.html很好但我想将Supplier模型保存在另一个文件中,以便我可以在很多地方使用它来确保值长度等的一致验证。

我应该怎么做?

我怀疑@NoView注释可能与它有关但我不知道如何导入外部文件并将其连接到提交和放大器。 SupplierMaint.js中的验证处理

鲍勃

1 个答案:

答案 0 :(得分:1)

模型

我就是这样做的 -

export class Supplier {
  name = '';
  modelId = '';
  constructor(data) {
    Object.assign(this, data);
  }
}

这让任何人都可以使用您的模型并创建它的新实例。传入的数据将覆盖您定义的默认值,但如果不存在,则仍然具有这些默认值。

验证

验证目前处于不稳定状态。我希望在本周末结束时完成最初的重构工作,但这里是我建议的最佳用法预览,反馈欢迎。

import {ValidationReporter} from 'aurelia-validate';

export class PersonViewModel {
  activePerson;
  static inject = [ValidationReporter];
  constructor(reporter) {
    this.activePerson = new PersonModel({firstName: 'Lucky Luke'});
    this.reporter = reporter.subscribe(validationErrors => {
      // do something with validationErrors
    });
  }
}

class PersonModel {
  @length({ minimum: 5, maximum: 25 }) firstName = 'Luke';
  @required lastName = 'Skywalker';
  @date lastUpdated = new Date();
  @datetime lastTimeUpdated = new Date();
  @email email = 'luke@skywalker.net';
  @length({ minimum: 5, maximum: 25 }) password = 'equal';
  @equality confirmPassword = 'equal';
  @url website = 'http://www.google.com';
  @numericality friendCount = 25;
  @numericality({ noStrings: true }) age = 25;
  constructor(data) {
    Object.assign(this, data);
  }
}