Aureliaコンポーネントは、アイテムのリストを表示することになっています。コンポーネントのモデルはバインド可能である「アイテム」プロパティがあります:私はから私のバインドされた配列に新しい項目を押すとコレクションが変更されたとき、Aurelia CollectionObserverハンドラはトリガされません
<div repeat.for="item of items">
${item.id} </div>
:
@bindable items = [];
をコンポーネントテンプレートは、単純な繰り返しの属性を使用してリストを表示しますコンポーネントが使用されているページのビューモデルでは、リストが更新されて新しいアイテムが表示されるときにアイテムが追加されているのがわかります。
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
}
}
しかし呼ばれることは決してありません私の「listChanged」ハンドラ: 私の問題は、私は「アイテムの配列がそのように私はこのようなコンポーネントにcollectionObserverを追加しようとしました変更されたときに、他のアクションを実行する必要があるということです。どんな考え?
これは微妙なJSのスコープの問題である場合は疑問に思う:
はこのような何かをやってみてください。 ..それ以外は、それは私には大丈夫です。 Aureliaのどのバージョン? – Charleh
私はシャルレが正しいと思います。私は私のAureliaアプリでそれをしなければならなかった。 –
@Charleh、これはスコープの問題ではありませんでしたが、私が下の答えで述べたように、コンポーネントへの参照を保持するためにここで提案したようにコールバックを再調査しなければならなかった...とにかく感謝! – Gaet