VueJS - 如何在脚本标签中获取单个文件组件的实例

Posted

技术标签:

【中文标题】VueJS - 如何在脚本标签中获取单个文件组件的实例【英文标题】:VueJS - How to get a single file component's instance in the script tag 【发布时间】:2019-03-18 08:30:45 【问题描述】:

我有一个文件组件dashboard.vue。在它的脚本标签中,我有以下代码。

<script>
    export default 
        data: function()
            return 
                scrolled: false,
            
        ,
    ;
    $window.on(
        scroll: function()
            this.scrolled = true;
        ,
    );
</script>

如何在$window.on事件监听器中访问组件的vue实例来更新数据?我知道为什么this 在当前设置中不起作用,只需要知道什么会起作用。干杯。

【问题讨论】:

在您的默认导出对象中,添加一个created 方法并将代码放在那里(您将可以访问this)参见。 Vue lifecycle hooks 【参考方案1】:

您可以将您的事件侦听器移动到 createdmounted 钩子内 ..

  <script>
    export default 
      data: function () 
        return 
          scrolled: false,
        
      ,
      created() 
        const self = this
        $(window).on(
          scroll: function () 
            self.scrolled = true
          
        )
      ,
      beforeDestroy() 
        $(window).off("scroll")
      
    
  </script>

不要忘记在 beforeDestroy 钩子中删除它。

【讨论】:

干杯。只是想知道您是否可以给我一个示例,说明何时忘记删除 beforeDestroy 挂钩中的侦听器会导致问题。 @Mav 根据经验,每当您将外部库与 Vue 一起使用时,您都应该考虑手动清理。这主要是因为它might lead to memory leaks。在您的情况下,它可能会引入错误,因为您的事件侦听器的回调正在引用组件的实例,如果侦听器在组件被销毁后处于活动状态,则会导致问题。

以上是关于VueJS - 如何在脚本标签中获取单个文件组件的实例的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VueJS 组件中使用通用脚本

如何将外部 JS 脚本添加到 VueJS 组件?

vuejs 在单个文件 vue 组件中具有范围 css 的多个主题

使用 vuejs 时,没有在 html 文件中导入 firebase 脚本标签

图像不显示在 VueJS 的组件中

Vuejs - 如何使用单个表单添加和编辑