【问题标题】:How is the script tag scoped for individual pages in Svelte/Sapper?Svelte/Sapper 中各个页面的脚本标签范围如何?
【发布时间】:2018-05-03 01:43:15
【问题描述】:

Sapper中一个页面的脚本标签中的导入库(ScrollMagic)的实例,该实例在导航到其他页面时保持存在。

我尝试在ondestroy 中销毁它,但我无法引用引用实例的变量(在oncreate 中创建)。

如何将脚本标签限定为单个页面,或在离开页面时销毁实例?

【问题讨论】:

    标签: svelte


    【解决方案1】:

    您有两种方法可以访问在ondestroy 中创建的oncreate 中的内容。首先是将它们添加为组件的属性:

    <script>
      import ScrollMagic from 'scrollmagic';
    
      export default {
        oncreate() {
          this.controller = new ScrollMagic.Controller(...);
          this.scene = new ScrollMagic.Scene(...);
        },
    
        ondestroy() {
          this.controller.destroy();
          this.scene.destroy();
        }
      };
    </script>
    

    第二种是使用this.on("destroy", ...)形式:

    <script>
      import ScrollMagic from 'scrollmagic';
    
      export default {
        oncreate() {
          const controller = new ScrollMagic.Controller(...);
          const scene = new ScrollMagic.Scene(...);
    
          this.on('destroy', () => {
            controller.destroy();
            scene.destroy();
          });
        }
      };
    </script>
    

    【讨论】:

    • 感谢您回答我所有的新手问题 Rich。非常感谢!
    猜你喜欢
    • 2019-12-19
    • 2021-04-23
    • 2019-11-13
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2020-09-04
    • 2013-09-01
    • 2016-11-05
    相关资源
    最近更新 更多