我一直在淘汰赛上创建一个自定义绑定,以帮助我创建一个很酷的分页,其幻灯片效果就像旋转木马上的滑动效果一样http://getbootstrap.com/javascript/#carousel
对于这个我创建了一个自定义绑定,其行为类似于foreach ,但还有2个其他参数:按页面排列的元素数量和当前页码
它现在正在工作,但我有一个奇怪的问题:当我使用此绑定时,页面的其余部分不再绑定到我的viewmodel 。
我创建了一个plunkr来向您展示问题:http://plnkr.co/edit/fCeczqBtYfYdqeLOPKMZ?p=preview
<div class="carousel" data-bind="foreachPaginated:
{
list:Items,
numberOfElementsByPage:numberOfElementsByPage,
currentPageNumber:currentPageNumber
}">
<div data-bind="text:$data"></div>
</div>
PS:如果您认为我的代码可以改进,请随时添加建议
感谢您的帮助!
答案 0 :(得分:1)
如果您收到“您无法多次将绑定应用于同一元素”。错误,可能您应该使用自定义绑定初始化函数中的“controlsDescendantBindings”选项,如knockout.js documentation中所述:
ko.bindingHandlers.myBinding = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
// .... some your code
return { controlsDescendantBindings: true };
},
update: .....