微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在AJAX调用之后将新DOM元素绑定到viewmodel

我遇到了将新DOM元素绑定到我的viewmodel的麻烦.这些元素在使用 AJAX调用加载的局部视图中(请参阅下面的customizeQuote函数).

$(function () {
var mvcModel = ko.mapping.fromJS(initialData);

function Quoteviewmodel() {
    var self = this;

    self.customizeQuote = function (quote) {
        self.selectedQuote = quote;

        //remove the disable attribute on all form controls before serializing data
        $(".step").each(function () {
            $(this).find('input,select').removeAttr('disabled');
        });

        //convert form data to an object 
        var formData = $('#etape').toObject();

        $.ajax("getSelectedQuote",{
            data: ko.toJSON({ model: self.selectedQuote,model1: formData }),type: "post",contentType: "application/json",success: function (result) {

                $("#custom").html(result);
                $("#etape").formwizard("show","customize");
                ko.applyBindings(self.selectedQuote,$("#covers"));

            }
        });
    }
}

var myviewmodel = new Quoteviewmodel();
var g = ko.mapping.fromJS(myviewmodel,mvcModel);    
ko.applyBindings(g);
});

这是局部视图html:

@model Quoteviewmodel
<table id="covers">
<thead>
    <tr>
        <th>
            ProductName
        </th>            
    </tr>
</thead>
<tbody data-bind="foreach: CoverQuotesviewmodel">
    <tr>
        <td>
            <input data-bind="value: ProductName" />
        </td>          
    </tr>
</tbody>
</table>

这条线:

ko.applyBindings(self.selectedQuote,$("#covers"));

触发错误

“ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node”

我是淘汰赛的新手,我不知道我做错了什么.任何的想法 ?

解决方法

$(“#covers”)不是DOM节点,它是一个jQuery对象.或许尝试使用它:

ko.applyBindings(self.selectedQuote,$("#covers")[0]);

[0]将获得jquery对象中选择器的第一个匹配元素.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐