How can i update the complete viewModel ?
- On page load i get a Model and convert that using
ko.mapping.fromJS(myObject)
to a viewModel. - If the user clicks a button i want to get updated data from the server
- Now i want to apply theese updates
If i use ko.applyBindings(viewModel);
it updates the ui perfectly. But it adds the same events again. So if the user clicks the button, the event gets fired twice, third and so on.
Question
What is a good way to update my complete viewModel. Maybe i remove the bindings and apply them again ? (how to do this).
Sample
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();
});
Update
Steve Greatrex Could you post your custom binding implementation?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};
If you look at the 'Specifying the update target' on the mapping documentation, you can specify a target for the mapping.
This should mean that you can say:
This way you will create a view model on the initial load, then update that view model for any subsequent loads.
Using mapping plugin I did this
That's all.