如何解决 Uncaught ReferenceError: bus is not defined? (vue.js 2)

Posted

技术标签:

【中文标题】如何解决 Uncaught ReferenceError: bus is not defined? (vue.js 2)【英文标题】:How to solve Uncaught ReferenceError: bus is not defined? (vue.js 2) 【发布时间】:2017-07-06 09:54:36 【问题描述】:

我遵循这个教程:https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication

将数据从一个组件传递到另一个组件

请看下面我的案例。我试试这样

我的看法是这样的:

<div class="row">
    <div class="col-md-3">
        <search-filter-view ...></search-filter-view>
    </div>
    <div class="col-md-9">
        <search-result-view ...></search-result-view>
    </div>
</div>

我的搜索过滤视图组件是这样的:

<script>
    export default
        props:[...],
        data()
            return
                ...
            
        ,
        methods:
            filterBySort: function (sort)
                bus.$emit('sort-param', sort)
                this.sort = sort
                ...
            
        
    
</script>

我的搜索结果视图组件是这样的:

<script>
    export default 
        props:[...],
        data() 
            return 
                ...
            
        ,

        methods: 
            getVueItems: function(page) 
                bus.$on('sort-param', function (sort) 
                    console.log(sort);
                )
                ...
            
        
    
</script>

我在 \resources\assets\js\app.js 上添加 var bus = new Vue();

所以它可以在任何地方访问

我想将排序参数(filterBySort方法,组件一)的值显示到getVueItems方法(组件二)

执行时,控制台中存在如下错误:

Uncaught ReferenceError: bus is not defined

我该如何解决这个错误?

【问题讨论】:

【参考方案1】:

您需要确保定义变量var bus = new Vue(); 的代码在使用此变量的代码之前执行。

另外,确保总线变量可以被使用它的代码访问。

【讨论】:

【参考方案2】:

您需要从App.vue 中导出变量总线并将其导入您需要的任何位置。

我个人做的是为它创建一个专用文件:bus.js

import Vue from 'vue'
export default new Vue()

并在需要的地方像这样导入它:

import bus from 'path/of/bus'
<script>
    export default
        props:[...],
        data()
            return
                ...
            
        ,
        methods:
            filterBySort: function (sort)
                bus.$emit('sort-param', sort)
                this.sort = sort
                ...
            
        
    
</script>

【讨论】:

监听事件怎么样?

以上是关于如何解决 Uncaught ReferenceError: bus is not defined? (vue.js 2)的主要内容,如果未能解决你的问题,请参考以下文章

下载大尺寸json时如何解决Uncaught RangeError

EasyNTD线上报错“Uncaught TypeError”该如何解决?

EasyNTD线上报错“Uncaught TypeError”该如何解决?

如何解决“Uncaught (in promise) TypeError: response.body.forEach is not a function”? (vue.js 2)

如何解决 Uncaught ReferenceError: bus is not defined? (vue.js 2)

如何解决 index.js:9 Uncaught TypeError:无法读取未定义的属性“setWallpaper”?