对于当前正在工作的项目,我们正在创建相当多的自定义控件,这些控件都共享相同的属性并且可绑定。
@bindable required: boolean = false;
@bindable minLength: number = 0;
@bindable maxLength: number = 0;
由于我们希望避免代码重复,因此我们的想法是将这些可绑定属性保存在一个单独的类中,称为“验证”。在这种情况下。
import {Validation} from "./validation";
export class MyClass {
private validation: Validation = new Validation();
// also tried:
// @bindable validation: Validation = new Validation();
}
问题是如何将HTML绑定到Validation类中的属性。执行此操作validation.required.bind="someProperty.required"
不会更新验证实例上的required
属性。我们试图使用DI,但这似乎并没有削减它。
import {inject} from "aurelia-framework";
import {Validation} from "./validation";
@inject(Validation)
export class MyClass {
constructor(private validation: Validation) {
this.validation = validation;
}
}
任何提示都将不胜感激。
编辑:
似乎Aurelia解释了“验证。需要”'作为一个命令,而不是一个表达。
WARN [templating-binding] Unknown binding command. Object {defaultBindingMode: null, attrName: "validation", attrValue: "true", command: "required", expression: null}
答案 0 :(得分:0)
作为一种解决方法,直到Aurelia支持可绑定属性的继承,我绑定到具有一些共享属性的类。现在,可绑定的那些将在控件之间重复。
import {bindable, bindingMode} from "aurelia-framework";
import {IControlBase, ControlBase} from "./controlbase";
export class MyClass {
@bindable controlbase: IControlBase = new ControlBase();
@bindable label: string = "";
@bindable editing: boolean = false;
@bindable({ defaultBindingMode: bindingMode.twoWay })
value: string;
}