在aurelia视图模型中,我有一些属性需要在每次更改其他属性时更新。
据我所知,有两种不同的方法可以做到这一点。
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
export class Foo2 {
propX : number;
setPropX(value : number) {
this.propX = value;
this.updateOtherProperty();
}
updateOtherProperty() {
//...
}
}
// usage
foo.setPropX(5) // updateOtherProperty gets called
最好的方法是什么?为什么?
答案 0 :(得分:1)
使用计算属性:
<div>${myComputedProp}</div>
用法:
@Component
@Service
@Controller
@Repository
有关详情,请访问:http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-computed-properties/1
答案 1 :(得分:1)
用于观察视图模型成员的紧凑Aurelia方法是使用可观察对象,它们的作用类似于可绑定对象。它相当于你的&#34;方法1&#34;但由于惯例不那么冗长,而且你不必跟踪任何剩余的Disposable
。
import {observable} from 'aurelia-framework';
export class Foo {
@observable
propX : number;
propXChanged(newVal, oldVal) {
//...
}
}