【问题标题】:access methods from the vue current component来自 vue 当前组件的访问方法
【发布时间】:2019-04-08 08:50:35
【问题描述】:

任何人都可以指导或建议如何解决以下问题。 用例:尝试实现通知组件 场景:我正在尝试调用方法或更改 Vue 中触发事件时的数据状态。 我已经在挂载函数上定义了事件侦听器并尝试访问其中一种方法。

基本上,事件函数中的警报被触发,而警报内部方法没有被触发,甚至任何数据操作都没有执行,即使在事件函数中也是如此。

我在哪里失踪?在事件侦听器中更改状态是否不正确? 基本上我正在尝试实现几秒钟后自动消失的通知功能

感谢任何帮助。

谢谢, 吉里什

【问题讨论】:

    标签: vue.js vuejs2 vue-component vue-events


    【解决方案1】:

    还有一个原因,this里面的回调函数不是Vue组件。您可以分配var self = this 并在回调中使用,或者使用箭头函数。

    mounted: function () {
      var self = this
      EventBus.$on('show', function () {
        self.test()
        self.show = true
      })
    },
    methods: {
      test () {
        console.log('Inside methods')
      }
    }
    

    【讨论】:

    • 感谢 ittus,它工作了:),但只是想知道为什么“this”在 Eventhandler 中不起作用
    【解决方案2】:

    我相信你的问题是拼写错误而不是

    method: {}
    

    ,使用methods: {} 示例:

    Error.
    method: {
    test: function () {
    alert('Inside Method');
    }
    
    correct.
    methods: {
    test: function () {
    alert('inside method);
    }
    }
    

    我知道这与问题没有太大关系,但在使用事件总线时要小心,就好像你有一个扬声器,在人群中间喊一个人的名字。 例子: eventbus 在 10,000 人中说汉密尔顿。 在这群人中间你能有多少个汉密尔顿?使用更具体的东西,例如父子通信,避免使用事件总线。

    【讨论】:

    • 嗨,加布里埃尔,是的,我的错。愚蠢的拼写错误:(。是的,我同意你在事件总线上的观点,一个全局事件总线,如果没有正确记录,可能会导致一些可维护性问题。幸运的是我使用的是本地事件处理程序。:)
    猜你喜欢
    • 2019-09-10
    • 2019-09-20
    • 2021-04-10
    • 2019-07-01
    • 2020-10-04
    • 2018-11-03
    • 2019-11-05
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多