Ich habe Eltern Modell person
. Das Ansichtsmodell hat ein beobachtbares Array von person
. Um eine Person zu bearbeiten/hinzufügen, habe ich ein jQuery UI-Dialogfeld (Ok/Abbrechen).Knockout Update vom jQuery UI Dialog abbrechen
var viewModel = function(){
var self = this;
self.personEntry = ko.observable(new person());
self.people = ko.observableArray();
self.populatePeople = function(jsonPeopleObj){//adds person objects to people array};
};
Das personEntry
Submodell wird den Dialog jQuery UI gebunden Verwendung with
binden. Eine Tabelle wird unter Verwendung der foreach
-Bindung auf dem people
beobachtbaren Array erzeugt.
Jetzt, wenn ich versuche, einen Datensatz zu ändern, rufe ich die folgende Funktion auf Klick der Zeile.
function rowSelected(item,event){
viewModel.personEntry(item);
openDialog();
}
Dies öffnet den Dialog mit den Details der ausgewählten Zeile im jQuery UI-Dialogfeld. Wenn ich jedoch einen Wert ändere und dann im Dialogfeld auf Abbrechen klicke, wird die Tabelle immer noch mit einem neuen Wert geändert, der nicht passieren sollte. Irgendwelche Gedanken?
Ich kann einen Beispielcode bei Bedarf setzen.
Sie * absolut * verwenden sollten [Knockout-jQueryUI] (http://gvas.github.io/ knockout-jqueryui /), das gut funktionierende Knockout-Bindungen für die verschiedenen jQuery UI-Standardwidgets bereitstellt. Bevor Sie etwas anderes tun, sehen Sie sich [das Beispiel für das Dialog-Widget] an (http://gvas.github.io/knockout-jqueryui/dialog.html). Befreien Sie sich von Ihren benutzerdefinierten Click-Event-Handlern und versuchen Sie stattdessen, auf diese Weise zu arbeiten. Wenn das Problem weiterhin besteht, fügen Sie Ihrer Frage Beispielcode hinzu. – Tomalak
Ich habe dieses Problem gelöst, indem ich eine neue Instanz des Personenobjekts erstellt habe und ihm die Werte aus dem Objekt zugewiesen habe. Dann übergebe ich dieses neue Personenobjekt an den Eintrag personEntry. Dies hat es behoben – Ramki
Für gutes Karma können Sie Ihre Arbeitslösung und zusammen mit einem kleinen Absatz der Erklärung als Antwort veröffentlichen. Vielleicht wird es jemand anderes in Zukunft nützlich finden. – Tomalak