Javascript 如何删除绑定?
使用Knockout,用一些json数据填充循环非常简单。以下是视图中的循环: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>
<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>