我有一个 Aurelia 组件,它只是应该显示项目列表。组件的模型有一个可绑定的“items”属性:
@bindable items = [];
Run Code Online (Sandbox Code Playgroud)
组件模板使用简单的重复属性显示列表:
<div repeat.for="item of items">
${item.id} </div>
Run Code Online (Sandbox Code Playgroud)
当我从使用该组件的页面视图模型中将新项目推送到绑定数组中时,我可以看到在刷新列表并出现新项目时添加了该项目。我的问题是,当修改“items”数组时,我需要执行其他操作,因此我尝试将 collectionObserver 添加到组件中,如下所示:
import {BindingEngine, inject} from 'aurelia-framework';
@inject(BindingEngine)
export class GridControl {
@bindable items = [];
constructor(bindingEngine) {
this.items = [];
let subscription = bindingEngine.collectionObserver(this.items)
.subscribe(this.listChanged);
}
listChanged(splices) {
// do some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的“listChanged”处理程序永远不会被调用。知道为什么吗?