web-dev-qa-db-ja.com

Aureliaでチェックボックスバインディングを設定する方法

チェックボックスリストがあります。ユーザーがチェックボックスの1つをチェックすると、.jsファイルで関数が呼び出され、次にwebapiコントローラーを呼び出すメソッドdataservice.jsが呼び出されます。これはすべて正常に機能し、正しいデータを返します。

プロセスが終了すると、シーケンスを起動したチェックボックスがオンになりません。結果を調べたところ、その項目のschoolDistrict.IsCheckedがtrueに設定されています。これは正しいです。

チェックボックスをオンにするにはどうすればよいですか?

以下はコードですが、check.one-wayバインドについてはわかりません

<li repeat.for="schoolDistrict of schools.Districts">                                     
  <input type="checkbox" checked.one-way="schoolDistrict.IsChecked" value="${schoolDistrict.Value}" click.trigger="searchSchoolDistrict()"/>${schoolDistrict.Name}
</li>

どんな助けでも大歓迎です。

10

ここにはいくつかの問題があります。

  • 問題はおそらく、searchSchoolDistrict()コードがIsCheckedプロパティを変更しているが、_one-way_バインディングが変更をリッスンしていないことです。
  • 値の補間は機能しますが、バインディング構文を使用する方がおそらく良いスタイルです。
  • _change.delegate_の設定はより堅牢であり、チェックボックスのすべての変更をリッスンします。これは、チェックボックスのベストプラクティスです。
  • 非推奨searchSchoolDistrict()には適切なスコープを選択してください。これは、おそらくschoolDistrictではなく_$parent_に存在するためです。

代わりにこれを使用してみてください:

_<li repeat.for="schoolDistrict of schools.Districts">                                     
  <input type="checkbox" 
    checked.bind="schoolDistrict.IsChecked" 
    value.one-way="schoolDistrict.Value"
    change.delegate="searchSchoolDistrict()"/>
  ${schoolDistrict.Name}
</li>
_
27