验证和继承
Validation and inheritence
我创建了以下名为 baseModel.js
的基础 class
import { Validation } from 'aurelia-validation';
let id;
let version;
let validation;
@inject(Validation)
export class BaseModel {
constructor(validation) {
this.validation = validation;
}
}
我正在 supplierModel.js
中扩展它
import { BaseModel } from "./baseModel";
let apSupplierCode;
let discountRate;
export class Supplier extends BaseModel {
constructor() {
super();
super.validation = validation.on(this)
.ensure('apSupplierCode')
.isNotEmpty()
.hasLengthBetween(3, 6)
.ensure('discountRate')
.isNotEmpty()
.containsOnlyDigits()
.isBetween(10, 45.99);
}
}
我在控制台中收到以下错误
inner error: ReferenceError: validation is not defined
at new Supplier http://localhost:9000/dist/models/supplierModel.js:63:55)
我已经尝试使用 get / set 访问器,super.validation 和验证,但没有任何区别。
为什么 Supplier 看不到其父项 (BaseModel) 中的变量 class?
我不认为依赖注入是这样工作的,它只会注入你正在创建的当前对象。这可能会破坏目的,但您需要做的是:
import { Validation } from 'aurelia-validation';
export class Supplier extends BaseModel {
@inject(Validation)
constructor(validation) {
super(validation);
// Do stuff
}
}
另一种选择是从基础容器中显式加载依赖项class
import {Container} from 'aurelia-dependency-injection';
import {Validation} from 'aurelia-validation';
export class BaseModel {
constructor() {
this.validation = Container.instance.get(Validation);
}
}
我创建了以下名为 baseModel.js
的基础 classimport { Validation } from 'aurelia-validation';
let id;
let version;
let validation;
@inject(Validation)
export class BaseModel {
constructor(validation) {
this.validation = validation;
}
}
我正在 supplierModel.js
中扩展它import { BaseModel } from "./baseModel";
let apSupplierCode;
let discountRate;
export class Supplier extends BaseModel {
constructor() {
super();
super.validation = validation.on(this)
.ensure('apSupplierCode')
.isNotEmpty()
.hasLengthBetween(3, 6)
.ensure('discountRate')
.isNotEmpty()
.containsOnlyDigits()
.isBetween(10, 45.99);
}
}
我在控制台中收到以下错误
inner error: ReferenceError: validation is not defined
at new Supplier http://localhost:9000/dist/models/supplierModel.js:63:55)
我已经尝试使用 get / set 访问器,super.validation 和验证,但没有任何区别。
为什么 Supplier 看不到其父项 (BaseModel) 中的变量 class?
我不认为依赖注入是这样工作的,它只会注入你正在创建的当前对象。这可能会破坏目的,但您需要做的是:
import { Validation } from 'aurelia-validation';
export class Supplier extends BaseModel {
@inject(Validation)
constructor(validation) {
super(validation);
// Do stuff
}
}
另一种选择是从基础容器中显式加载依赖项class
import {Container} from 'aurelia-dependency-injection';
import {Validation} from 'aurelia-validation';
export class BaseModel {
constructor() {
this.validation = Container.instance.get(Validation);
}
}