これは、Knockout.js でできることです。KO は必ずしも jQuery の代わりになるとは想定されていませんが、モデルとビューのバインディング (つまり VMMV) を支援するためのより高いレベルのレイヤーです。jQuery は依然としてアニメーションに最適であり、最も重要なのは AJAX 呼び出しです。何をしているかにもよりますが、KO と jQuery は非常にうまくやっていくことができます。
KOは理解するのが難しいかもしれませんが、一度理解すれば、それは非常に素晴らしく、特定のことを非常に簡単にします. たとえば、曜日をクリックして表示するセクションだけに取り組みました。
http://codepen.io/CWSpear/pen/IbkvJ
何もチェックされていない場合は何も表示されませんが、チェックを開始するとすぐに、チェックされた日が表示されます (つまりWeekly on Thursday
)。
JavaScript はほんの数行です。魔法はバインディングです:
各入力にはdata-bind="checked: days"
属性があります。つまり、それらがチェックされるとdays
、ViewModel の変数に自動的に追加されますko.observeableArray
。つまり、これらのチェックボックスを監視していて、変更があるとすぐに、それに依存するものすべてに通知します。
結局のところ、これは(計算可能なオブザーバブルである)summary
変数です。ko.computable
属性があります: data-bind="text: summary, visible: days().length > 0"
. これは、days
が空でない場合にのみ表示されることを意味し、テキストは JavaScript で「[リストのdays
]に毎週」として定義されています。