Javascript Knockoutjs:将值绑定到span,从不同的文本框保存

Javascript Knockoutjs:将值绑定到span,从不同的文本框保存,javascript,json,knockout.js,Javascript,Json,Knockout.js,我面临以下问题:使用Knockout.js将JSON数据绑定到多个跨度: $(document).ready(function () { function viewModel() { self.inlogGegevens = ko.observable(); function inlogGegevensViewModel(data) { this.UserId = data.UserId; // more

我面临以下问题:使用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函数片段:

函数可编辑(){
var editable_td=$(this.find(“.editable”);
var-editable_元素=$(this.find(“.editable.value”);
var OriginalContent=editable_element.html();
$(此).unbind('单击',可编辑).addClass(“编辑”);
可编辑的_元素。同级(“.action”).hide();
可编辑的_element.html(“”);
可编辑的_元素.children().first().focus();
可编辑元素数据(“原始”,原始内容);
};
我不是在寻找一个有效的解决方案(我不能发布完整的代码),而是在正确的方向上寻找一个关于如何实现它的提示


在将一个值绑定到一个HTML标记(span)并将另一个标记(JS生成的文本框)的值保存回客户端的情况下,最好的解决方案是什么?

显示您的标记(JavaScript生成的文本框)?什么时候生成?什么触发了它?这应该是视图模型的一部分。代码缺少一些括号,因此无法真正工作。请更正这一点,并发布一个到JSFIDLE的链接,其中包含您的代码。@SteenT:i添加了一些生成文本框的javascript代码。好吧,您应该坚持使用敲除和绑定,以使其更简单。混合使用jquery(或任何其他框架)只会使生成干净的解决方案变得更加困难。如果你有一个“更改”按钮,我会在你的视图模型上调用一个方法,设置一个布尔值来显示输入框(和一个保存按钮),当点击保存时,将更改推送到服务器上。
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);
};