1. ホーム
  2. knockout.js

Knockout.js v2.3.0 エラー "同じ要素にバインディングを複数回適用することはできません。"

2023-08-21 23:49:41

質問

Knockout.js 2.3.0にアップグレードしたところ、このエラーが発生しました。

You cannot apply bindings multiple times to the same element.

というのは、2.2.1では得られなかったものです。

をクリックすると、MVC コントローラから部分ビューを取得して、ページに追加しています。 href . 部分ビューを取得するためにリンクをクリックする2回目にエラーが発生します。私はこれを何度もやっています。

これをクリアして、新たに投げられるエラーを回避する方法はありますか?

以下は私のコードです。

$.get(url + "GetAssignedCompaniesView?layoutId=" + layoutId + "&noCache=" + new Date().getMilliseconds(), function (result) {
    $("#editAssignedPartial").html($(result));
    showEditAssignedArea(true);
    $(window.document).ready(function () {
        // error is thrown here
        ko.applyBindings(self, window.document.getElementById("editAssigned"));
        $("#layoutId").attr("value", layoutId);
        updateTypeHiddenElement.attr("value", "companies");
    });
});

以下は私のHTMLです。

<div id="area1">
    <!-- grid here with links -->
</div>
<div id="editAssignedPartial"></div>

$(document).ready(function () {
    'use strict';
    var vm = new Vm();
    ko.applyBindings(vm, document.getElementById("area1"));
});

どのように解決するのですか?

バインディングを削除してから applyBindings を再び使用する前にバインドを削除する必要があります。

ko.cleanNode($element[0]);