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 badges2 Answers
Reset to default 5You 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.