在aurelia视图模型中,有些属性每次更改其他属性时都需要更新。
据我所知,有两种不同的方法可以做到这一点。
方法1:propertyObserver
export class Foo {
propX : number;
bindingEngine : BindingEngine;
bind() {
this.bindingEngine.propertyObserver(this, 'propX')
.subscribe((newV, oldV) => { this.updateOtherProperty() });
}
updateOtherProperty() {
//...
}
}
// usage
foo.propX = 5 // updateOtherProperty gets called
方法2:自制二传手
export class Foo2 {
propX : number;
setPropX(value : number) {
this.propX = value;
this.updateOtherProperty();
}
updateOtherProperty() {
//...
}
}
// usage
foo.setPropX(5) // updateOtherProperty gets called
最佳方法是什么?为什么?
最佳答案
使用计算的属性:
import { computedFrom } from 'aurelia-framework';
export class MyClass {
@computedFrom('propX', 'propY') //update this property whenever propX or propY change
get myComputedProp() {
//do your magic here!
return this.propX + this.propY;
}
}
用法:
<div>${myComputedProp}</div>
有关更多信息,请访问:http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-computed-properties/1