我遇到了以下问题:我将Knockout.js的JSON数据绑定到多个跨度:
$(document).ready(function () {
function viewModel() {
self.inlogGegevens = ko.observable();
function inlogGegevensViewModel(data) {
this.UserId = data.UserId;
// more bindings...
return this;
}
$.getJSON(url, function (data) {
self.inlogGegevens(inlogGegevensViewModel(data));
ko.applyBindings(new viewModel());
});
这可以按预期工作。跨度正确显示JSON。但是......客户端要求用户在新的javascript生成的文本框中编辑值 。当用户点击“保存”按钮时,需要将此新生成的文本框中的值发送回viewmodel并发布到服务器。
以下是当用户点击“更改”按钮(而不是我的代码)时调用的JavaScript函数片段:
function editable() {
var editable_td = $(this).find(".editable");
var editable_element = $(this).find(".editable .value");
var OriginalContent = editable_element.html();
$(this).unbind('click', editable).addClass("editing");
editable_element.siblings(".action").hide();
editable_element.html("<input class='w100p form-control' type='text' value='" + OriginalContent + "' />");
editable_element.children().first().focus();
editable_element.data("original", OriginalContent);
};
我不是在寻找一个可行的解决方案(我不能发布完整的代码),而是在正确的方向上提示如何实现它。
在将值绑定到一个HTML标记(跨度)并将另一个标记(JS生成的文本框)的值保存回客户端的情况下,最佳解决方案是什么?