KnockoutJS - ViewModel / Mapping Plugin aktualisieren
Wie kann ich das komplette viewModel aktualisieren?Beim Laden der Seite erhalte ich ein Modell und konvertiere es mit
ko.mapping.fromJS(myObject)
zu einem viewModel.Wenn der Benutzer auf eine Schaltfläche klickt, möchte ich aktualisierte Daten vom Server erhaltenJetzt möchte ich diese Updates anwendenWenn ich benutzeko.applyBindings(viewModel);
es aktualisiert die Benutzeroberfläche perfekt. Es werden jedoch wieder dieselben Ereignisse hinzugefügt. Wenn der Benutzer auf die Schaltfläche klickt, wird das Ereignis zweimal ausgelöst, als drittes und so weiter.
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();
});
AktualisierenSteve Greatrex Könnten Sie Ihre benutzerdefinierte Bindungsimplementierung veröffentlichen?
ko.bindingHandlers.domBinding = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
viewModel.domElement = element;
},
};