最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to solve Uncaught ReferenceError: bus is not defined? (vue.js 2) - Stack Overflow

programmeradmin1浏览0评论

I follow this tutorial : .html#Non-Parent-Child-Communication

It to passing data from a ponent to other ponent

See my case below. I try like that

My view is like this :

<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>

My search-filter-view ponent is like this :

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

My search-result-view ponent is like this :

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

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

And I add var bus = new Vue(); on \resources\assests\js\app.js

So it can be accessed anywhere

I want display value of sort parameter (filterBySort method, ponent one) to getVueItems method (ponent two)

When executed, in the console exist error like this :

Uncaught ReferenceError: bus is not defined

How can I solve the error?

I follow this tutorial : https://v2.vuejs/v2/guide/ponents.html#Non-Parent-Child-Communication

It to passing data from a ponent to other ponent

See my case below. I try like that

My view is like this :

<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>

My search-filter-view ponent is like this :

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

My search-result-view ponent is like this :

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

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

And I add var bus = new Vue(); on \resources\assests\js\app.js

So it can be accessed anywhere

I want display value of sort parameter (filterBySort method, ponent one) to getVueItems method (ponent two)

When executed, in the console exist error like this :

Uncaught ReferenceError: bus is not defined

How can I solve the error?

Share Improve this question edited Jul 13, 2022 at 23:00 tony19 139k23 gold badges277 silver badges347 bronze badges asked Feb 17, 2017 at 2:25 moses tohmoses toh 13.2k81 gold badges264 silver badges459 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

You will need to to export the variable bus from the App.vue and import it where ever you need it.

What I personally do is I create a dedicated file for it: bus.js

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

and import it like this where it is needed:

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>

You need to make sure that your code which defines the variable, var bus = new Vue();, gets executed before the code that uses this variable.

Also, make sure that the bus variable is accessible by the code that uses it.

发布评论

评论列表(0)

  1. 暂无评论