Ich verwende knockout.js in meinem copepen.io, mit Jade als mein Präprozessor.Warum funktioniert meine Datenbindung an eine berechnete Funktion nicht (mit knockout.js und jade)?
Meine Bearbeitungsschaltflächen sollen den Wert in der ersten td in true ändern, und die Speicheränderungen sollen den Wert der ersten td wieder in false ändern. Warum funktioniert die Bindung nicht? Es bindet sich das erste Mal daran, hört aber nicht ständig auf Veränderungen zu. Warum ist es nicht? Die Funktion, die ich beim Klicken anrufe, ist eine berechnete Funktion, und die Variable, die ich ändern möchte, ist beobachtbar. Warum funktioniert es nicht ??
Heres ein Link zu meinem Code, der auf codepen ist
http://codepen.io/jkwest30/pen/bpYXYP
heres den Code als auch
Jade
.container
.users.col-md-11.col-xs-12.table-responsive
table.col-xs-12
tr
th Name
th Username
th
tr
td
input.form-control(data-bind="value:edit()")
td
input.form-control(value="[email protected]")
td
button.btn.btn-info.col-xs-12(data-bind="click:editFunction()") Edit
tr
td
input.form-control(value="Jake")
td
input.form-control(value="[email protected]")
td
button.btn.btn-info.col-xs-12(data-bind="click:editFunction()") Edit
button.save.btn.btn-success.col-xs-12.col-md-4.col-md-offset-4(data-bind="click:saveChanges()") Save All Changes
Javascript
var viewModel = (function(){
function viewModel(){
var self = this;
this.name = ko.observable("knockout works!");
this.edit = ko.observable(false);
this.editFunction = ko.computed(function(){
self.edit(true);
})
this.saveChanges = ko.computed(function(){
self.edit(false);
})
}
return viewModel;
})()
ko.applyBindings(new viewModel())
FYI wenn Sie nicht mit Jade vertraut sind, klicken Sie einfach auf die Schaltfläche "kompiliert anzeigen" direkt über dem Jade-Code.
Danke!
Dank binden konnten! Ich war mir des Editierknopfes und seiner Zeileneingabe bewusst, aber ich habe gerade eine Menge verschiedener Dinge probiert und das noch nicht geändert. Das macht aber durchaus Sinn, tolle Antwort! Einfache Punkte für Sie! – Javascripter