Javascript 如何删除绑定?

Javascript 如何删除绑定?,javascript,knockout.js,Javascript,Knockout.js,使用Knockout,用一些json数据填充循环非常简单。以下是视图中的循环: <div class="row" data-bind="foreach: VacationRequestNotes"> <div class="col-lg-2"> <span class="input-sm" style="white-space:nowrap;" data-bind="text: EmployeeName"></span>

使用Knockout,用一些json数据填充循环非常简单。以下是视图中的循环:

<div class="row" data-bind="foreach: VacationRequestNotes">
    <div class="col-lg-2">
        <span class="input-sm" style="white-space:nowrap;" data-bind="text: EmployeeName"></span>
     </div>
     <div class="col-lg-10">
         <span class="input-sm" data-bind="text: NoteText"></span>
     </div>
</div>
这太棒了!至少是第一次。第二次,我明白了

未捕获错误:不能对同一元素多次应用绑定

我在这里看到其他线程说我需要删除绑定,但我很难将这些示例应用到我正在做的事情中

function ViewNotes(vactionRequestId) {
    $.getJSON("/VacationRequests/GetNotes", { VacationRequestId: vactionRequestId }, function (data) {
        if (data != "error") {
            ko.applyBindings({
                VacationRequestNotes: data
            });
            ko.cleanNode(??? WHAT DO I PUT HERE ???);
        }
    });
}

终于让它工作了:

  $(document).on('ready',
        function () {
            masterVM = new VacationRequestsViewModel();
            ko.applyBindings(masterVM);
        });

    function VacationRequestsViewModel() {
        var self = this;
        self.VacationRequestNotes = ko.observableArray();

        self.ViewNotes = function (vactionRequestId) {
            $.getJSON("/VacationRequests/GetNotes", { VacationRequestId: vactionRequestId }, function (data) {
                if (data != "error") {
                    self.VacationRequestNotes(data)
                    $("#modalNotes").modal('show');
                }
            });
        }
    }
然后,在HTML中,代替此链接:

<a href="" onclick="ViewNotes(3)">View Notes</a>

只需将其更改为:

<a href="" onclick="masterVM.ViewNotes(3)">View Notes</a>


您是否尝试过从另一端接近它,而不是从重复的代码块中应用绑定?您可以在文档准备就绪时应用它们一次,并更新ajax回调中的现有观察值@Jason Solake:好吧——是的,我也这么想。新的淘汰赛。想知道怎么做。当页面首次加载时,VacationRequestNotes将为空。直到用户单击“查看注释”按钮,它才会包含任何内容。那么,在文档准备就绪时,我要将其绑定到什么呢?好的,谢谢!一个问题:GetNotes是如何执行的?vm.GetNotes(someParameter)。也可以将其绑定到按钮或链接。我可以帮你做到这一点。在ko.applyBindings(vm)之后是的,将它绑定到链接正是我需要做的。现在我有一个链接是
onclick=ViewNotes(45)
,例如,您应该使用knockout属性Click来代替onclick。foreach循环将当前项传递给GetNotes函数。
<a href="" onclick="ViewNotes(3)">View Notes</a>
<a href="" onclick="masterVM.ViewNotes(3)">View Notes</a>