RactiveJS 装饰器初始化问题

RactiveJS decorator init issue

我正在为一些滑块使用装饰器,如下所示:

content = new Ractive({
    el: '.wrapper',
    template: templates.wrapper,
    partials: templates,
    data : { ... },
    decorators: {
        carousel: function( node )
        {
            console.log( 'carousel init' );
            carousel = $( node ).owlCarousel({ 
                items: 1,
                navigation: false 
            });

            return {
                teardown: function () {
                    console.log( 'carousel destroy' );
                    carousel.trigger('destroy.owl.carousel').removeClass('owl-carousel owl-loaded');
                    carousel.find('.owl-stage-outer').children().unwrap();
                }
            }
        }
    }
}

发生的事情是,正如您在日志中看到的那样,当在具有 inited 轮播的模板与具有此装饰器的另一个模板之间交换时,第一个装饰器 teardown在新模板的装饰器为 initiated 后触发,因此第二个模板上的轮播得到 torn down 而不是第一个模板中的轮播。

我做错了什么吗?谢谢!

更新

我在这里为它制作了一个 jsfiddle:https://jsfiddle.net/05sq8o2k/6/

如果收到警告,请务必点击 load unsafe scripts,因为据我所知,ractivejs cdn 不支持 https,所以 jsfiddle 现在有点不同意它。

这似乎在下一个版本的 Ractive 中得到修复。更新您的 fiddle 以使用:https://cdn.ractivejs.org/edge/ractive.min.js

亲切的问候

鲍勃