Knockout:创建自定义绑定后绑定不应用于页面的一部分

时间:2014-10-31 19:41:32

标签: javascript knockout.js custom-binding

我一直在淘汰赛上创建一个自定义绑定,以帮助我创建一个很酷的分页,其幻灯片效果就像旋转木马上的滑动效果一样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:如果您认为我的代码可以改进,请随时添加建议

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您收到“您无法多次将绑定应用于同一元素”。错误,可能您应该使用自定义绑定初始化函数中的“controlsDescendantBindings”选项,如knockout.js documentation中所述:

        ko.bindingHandlers.myBinding = {
        init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
            // .... some your code
            return { controlsDescendantBindings: true };
        },
        update: .....