私のアプリケーションでは、次のパターンが何度も繰り返されていることがわかりました(以下のコードを参照)。最初のロードではBindMyEvents(true)を呼び出し、その後のデータ取得ではBindMyEvents(false)を呼び出す必要があります。
それは怠惰にロードされるので、データをHTMLソースにシリアル化したくありません。ブールフラグをBind()メソッドに渡すよりも良い方法はありますか?ノックアウトでこれを達成するための標準的なパターンはありますか?
ビューモデル定義内でviewAlertsModel.alerts=nullを設定してから、Bind関数にこれをチェックさせるべきだと考えていました。nullに設定されている場合は、マッピングメソッドを呼び出してからapplyBindings()を呼び出しますか?
function BindMyEvents(initialMap) {
// get alerts, map them to UI, then run colorbox on each alert
$.getJSON("/Calendar/MyEvents/", {},
function (data) {
if ( initialMap ) {
// set-up mapping
viewAlertsModel.alerts = ko.mapping.fromJS(data);
ko.applyBindings(viewAlertsModel,$("#alertedEventsContainer")[0]);
} else {
// update
ko.mapping.fromJS(data, viewAlertsModel.alerts);
}
});
}