すべてのチェックボックスが正しくバインドされていると仮定すると、 change
イベント。
JS:
export class Welcome {
constructor() {
this.isAllChecked = false;
this.items = [
{ display: 'test 1', checked: false },
{ display: 'test 2', checked: false },
{ display: 'test 3', checked: false },
{ display: 'test 4', checked: false },
];
}
checkAll() {
this.items.forEach(i => i.checked = this.isAllChecked);
}
}
HTML:
<template>
<label>
<input type="checkbox" value="true" checked.bind="isAllChecked" change.delegate="checkAll()" />
Check All
</label>
<label repeat.for="item of items" style="display: block">
<input type="checkbox" value="true" checked.bind="item.checked" />
${item.display}
</label>
</template>
ここchange
方法は十分ではありません何らかの理由場合は、たとえばhttp://plnkr.co/edit/AzU1dtOVgRpkVUHvupcZ?p=preview
可能性がありますthを使用するe bindingEngine
をクリックしてチェックボックスを確認します。このように:
JS:
import {BindingEngine} from 'aurelia-binding'; //or aurelia-framework
import {inject} from 'aurelia-dependency-injection'; //or aurelia-framework
@inject(BindingEngine)
export class Welcome {
constructor(bindingEngine) {
this.bindingEngine = bindingEngine;
this.checkAll = false;
this.items = [
{ display: 'test 1', checked: false },
{ display: 'test 2', checked: false },
{ display: 'test 3', checked: false },
{ display: 'test 4', checked: false },
];
this.checkAllSubscriber = this.bindingEngine.propertyObserver(this, 'checkAll')
.subscribe((newValue, oldValue) => {
this.items.forEach(i => i.checked = newValue);
});
}
detached() {
this.checkAllSubscriber.dispose();
}
}
HTML:
<template>
<label>
<input type="checkbox" value="true" checked.bind="checkAll" />
Check All
</label>
<label repeat.for="item of items" style="display: block">
<input type="checkbox" value="true" checked.bind="item.checked" />
${item.display}
</label>
</template>
は、あなたが不要になったdispose()
を呼び出すことを忘れないでください。
ここ
実施例であるhttp://plnkr.co/edit/uWjIEN8ep184af3w5Ay9?p=preview
これらは私が見つけたソリューションです。別の方法が見つかった場合は、この回答を更新します。
希望すると便利です。
Fabio私はこの解決策に出かけましたが、あなたと一緒に試してみました。あなたはどう思いますか?: $( "入力:checkbox.order-input")。 order-input-root ")。prop( 'checked')); – Saikios
これは良い解決策のようですが、Aurelia bindingsには関連していません。これはjQueryに関連しています。とにかく、あなたがより快適に感じるものを選択してください:) –
確かにそれをaureliaに変更しますが、jqueryを使用している他のプログラマーと話をする必要があります:Dその理由はあなたの答えを – Saikios