我有一个包含数据的表,我希望view能够在从另一个视图触发事件时检查show.bind语句。问题是事件没有改变当前视图中的任何数据。
foo.html:
<tr repeat.for="entity of viewData.entities">
...
<p if.bind="$parent.canBeRemoved(entity.id)">
canBeRemoved
</p>
...
</tr>
我正在使用EventAggregator接收事件,我希望它强制刷新阵列。有可能吗?
答案 0 :(得分:4)
signal
绑定行为处理此问题的最佳方法是通过信号绑定行为发送信号。
<强> template.html 强>
<tr repeat.for="entity of viewData.entities">
...
<p if.bind="$parent.canBeRemoved(entity.id) & signal:'update-view'">
canBeRemoved
</p>
...
</tr>
<强> viewModel.ts 强>
import {BindingSignaler} from 'aurelia-templating-resources';
// grab a reference to the signaler
constructor(signaler: BindingSignaler) {
this.signaler = signaler;
}
// and fire the signal event bound in your view
// whenever the event is handled
respondToEvent(event) {
// do eventy things
this.signaler.signal('update-view');
}
答案 1 :(得分:1)
您可以使用getter功能。例如:
JS
export class Entity {
//@computedFrom('property1', 'property2')
get canBeRemoved() {
//your magic here
//return true or false;
}
}
HTML
<tr repeat.for="entity of viewData.entities">
...
<p if.bind="entity.canBeRemoved">
canBeRemoved
</p>
...
</tr>