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

Knockout : Bindings not applied to a part of a page after creating a custom binding

本文关键字:绑定 应用于 一部分 创建 自定义 Knockout      更新时间:2023-09-26

我一直在敲除上创建一个自定义绑定,以帮助我创建一个很酷的带有幻灯片效果的分页,就像在旋转木马上的引导程序上一样http://getbootstrap.com/javascript/#carousel

为此,我创建了一个自定义绑定,它的作用类似foreach,但需要两个其他参数:按页面划分的元素数量和当前页面编号

它目前正在工作,但我有一个奇怪的问题:当我使用此绑定时,页面的其余部分不再绑定到我的视图模型

我创建了一个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>

附言:如果你认为我的代码可以改进,请随时添加建议

谢谢你的帮助!

如果您得到"您不能将绑定多次应用到同一个元素。"错误,您可能应该在自定义绑定init函数中使用"controlsDescendantBindings"选项,如knockout.js文档中所述:

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