http://jsfiddle.net/scottbeeson/SRUKN/16/
单击左侧列表中的项目会将其添加到右侧列表中。单击右侧列表中的项目应将其删除。它会删除已经存在的第一个项目,但不会删除添加的项目。我需要重新应用绑定(bind)什么的吗?
ko.applyBindings(viewModel);
$('.result').on('click',function() {
var item = ko.dataFor(this);
viewModel.visibleItem.push(item);
});
$('.visibleItem').on('click',function() {
var item = ko.dataFor(this);
viewModel.visibleItem.remove(item);
});
最佳答案
您的点击处理程序仅附加到 DOM 中已有的元素。如果你想让它适用于动态添加的元素,你需要将你的处理程序附加到已经在 DOM 中并且不会改变的更高级别上(例如 document
或在你的情况下 .top
):
$(document).on('click', '.visibleItem', function() {
var item = ko.dataFor(this);
console.log(item)
viewModel.visibleItem.remove(item);
});
演示 JSFiddle.
但是 Knockout 的方式是让 Knockout 处理你的事件:
因此在您的 View 模型上添加处理程序:
viewModel.removeVisible = function(item) {
viewModel.visibleItem.remove(item);
}
并将其绑定(bind)到您的 View 中:
<div class="visibleItem" data-bind="click: $parent.removeVisible">
</div>
演示 JSFiddle.
关于knockout.js - 为什么我无法删除绑定(bind)后添加的可观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070753/