完全なviewModelを更新するにはどうすればよいですか?
- ページの読み込み時にモデルを取得し、それを使用
ko.mapping.fromJS(myObject)
してviewModelに変換します。 - ユーザーがボタンをクリックした場合、サーバーから更新されたデータを取得したい
- 今、私はこれらの更新を適用したい
使用するko.applyBindings(viewModel);
と、UIが完全に更新されます。しかし、同じイベントが再び追加されます。したがって、ユーザーがボタンをクリックすると、イベントは2回、3回というように発生します。
質問
私の完全なviewModelを更新するための良い方法は何ですか。たぶん私はバインディングを削除して再度適用しますか?(これを行う方法)。
サンプル
var viewModel;
function update()
{
$.ajax({
url: '...',
type: "GET",
statusCode: {
200: function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
}
}
});
}
// first call after page load
update();
// user click
$("#myButton").click(function() {
update();
});
アップデート
Steve Greatrexカスタムバインディングの実装を投稿していただけますか?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};