【问题标题】:Knockout mapping plugin: reload data with AJAXKnockout 映射插件:使用 AJAX 重新加载数据
【发布时间】:2014-12-15 09:47:57
【问题描述】:

我想在 Bootstrap 模式中显示我的用户数据的详细信息。我使用 AJAX 加载数据,并将它们绑定到具有 knockout mapping plugin 的 Knockout ViewModel。

这工作得很好,但是当我多次加载用户数据时,我总是看到以下消息:

Error: You cannot apply bindings multiple times to the same element.

淘汰视图模型:

function UserViewModel() {
    var self = this;

    self.loadUserData = function(userId) {
        $.ajax({
            type : "POST",
            url : "/user/loadUserDetail.htm",
            data: {"userId": userId},
            success : function(response) {
                self.userHelper = ko.mapping.fromJSON(response);
                ko.applyBindings(self); 
                $("#user-dialog").modal('show');
            },
            error : function(e) {
                showErrorBox('Error: ' + e.status);
            }
        });
    }
}

我该如何解决这个问题?

【问题讨论】:

    标签: jquery ajax knockout.js knockout-mapping-plugin


    【解决方案1】:

    像你一样拉下数据,但是一旦你有了它,使用 var jsonToJsObj = $.parseJSON(jsonResult) 来获取一个 js 对象,然后你使用 ko.mapping.fromJS(jsonToJsObj) 应该可以工作。

    【讨论】:

    • 感谢您的回复。不幸的是,我收到了和以前一样的消息。
    • 成功 : function(response) { var jsonToJsObj = $.parseJSON(response); self.userHelper = ko.mapping.fromJS(jsonToJsObj); ko.applyBindings(self); $("#user-dialog").modal('show'); },
    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 2014-03-04
    • 2013-09-27
    • 2012-02-08
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多