使用自定义绑定和 $.on() 对大约 500 行数据列表上的人机交互做出反应是否有一些性能或其他收益?
想到这个问题是因为我注意到淘汰事件是使用 bind() 附加到元素的,这意味着它们在每个点击按钮上,还是我错了?
我有两个样品
首先 - http://jsfiddle.net/dzjosjusuns/yStt7/ - 附加到子项目的事件
<div data-bind="text:head.id"></div>
<div id="container" data-bind="foreach:head.rows">
<div class="item">
<button data-bind="click:$root.head.deleteRow">remove</button>
<span data-bind="text:name"></span>
</div>
</div>
第二 - http://jsfiddle.net/dzjosjusuns/NN3h8/ - 事件仅通过自定义绑定附加到父级
<div data-bind="text:head.id"></div>
<div id="container" data-bind="foreach:head.rows, onRowDelete:head.deleteRow">
<div class="item">
<button>remove</button>
<span data-bind="text:name"></span>
</div>
</div>
客户绑定
ko.bindingHandlers.onRowDelete = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$('#container').on('click', '.item button', function (event) {
valueAccessor().call(viewModel.head, ko.dataFor(event.target), event.target);
});
}
};
那么,做这样的自定义绑定有什么意义吗?