试图用Knockout调用getJSON

时间:2014-10-31 22:30:28

标签: javascript json api knockout.js

这是我的代码:

    $('#idapiNumber').focusout(function () {

        var wellViewModel = function (APINumber, OperatorName) {
            this.APINumber = ko.observable(APINumber);
            this.OperatorName = ko.observable(OperatorName);
        };

       ko.applyBindings(new wellViewModel("", ""));

        var searchDoggrOPIAPI = "api/values";
        $.getJSON(searchDoggrOPIAPI, function (data) { data = JSON.stringify(wellViewModel()) },     function (data, textStatus, jqXHR) { alert("Status: " + textStatus); });

    });

</script>

这是我的页面:

<label for="idapiNumber">API Number</label>
<input id="idapiNumber" data-bind="value: APINumber" type="text" placeholder="API Number" class="form-control" />

<label for="OperatorName">Operator Name</label>
<input id="OperatorName" data-bind="value: OperatorName" type="text" class="form-control" />

这是我得到的错误:

enter image description here

无法弄清楚我收到此错误的原因。

1 个答案:

答案 0 :(得分:0)

错误是:“您无法多次将绑定应用于同一元素”,这意味着您将多个viewModel绑定到同一个DOM {{1这是错的。这可能发生了,因为node被多次触发。只需绑定focusout一次即可。 您可以在应用绑定之前调用:viewModel来验证问题:

ko.cleanNode($('#some-node')[0])

当然,您会将$('#idapiNumber').focusout(function () { ... ko.cleanNode($('#some-node')[0]); ko.applyBindings(new wellViewModel("", "")); ... }); 替换为真正的选择器。