Knockout映射插件:使用AJAX重新加载数据

时间:2014-10-20 12:00:13

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

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

这项工作非常顺利,但只要我多次加载用户数据,我总会看到以下消息:

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

Knockout ViewModel:

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);
            }
        });
    }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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