class.bind
をchecked.bind
に依存するように使用しようとしています。Aurelia class.bind with checked.bindの問題
私の使用例はかなりシンプルです。私はtable
を使って表示された項目のリストを持っています。この表の各行はcheckbox
です。対応するcheckbox
(行の)がチェックされているときはいつでも、行を「選択済み」としてマークしたいと思います。このため 私は、結合後に使用しています
<table class="table table-striped table-hover table-responsive">
<tbody>
<tr repeat.for="item of items" class.bind="$parent.selectedItems.indexOf(item)>-1?'info':''">
<td>
<input type="checkbox" checked.bind="$parent.selectedItems" model.bind="item" />
</td>
<td>${item.id}</td>
<td>${item.name}</td>
</tr>
</tbody>
</table>
しかし、意図したのと同じ動作しない、これはthis plunkで見ることができます。次のように私は、@computedFrom('selectedItems', 'items')
および/またはdeclarePropertyDependencies(App, 'classes', ['selectedItems', 'items']);
とgetter
を使用し、回避策として
:
import {computedFrom, declarePropertyDependencies} from "aurelia-framework";
export class App {
...
@computedFrom('selectedItems', 'items')
get classes() {
const self = this;
const retval= self.items.map((item: any) => {
return self.selectedItems.indexOf(item) > -1 ? "info" : "";
});
return retval;
}
}
//declarePropertyDependencies(App, 'classes', ['selectedItems', 'items']);
しかし、これはあまりにもこのworkaround plunkでここに見られるように動作しません。
@computedFrom
および/またはdeclarePropertyDependencies
のいずれも使用されておらず、明らかにダーティチェックが必要な場合にのみ動作します。
これを行うにはきれいな方法がありますか?