gpt4 book ai didi

javascript - 如何在 Bootstrap 内使用 Vue.js 发出事件?

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:34 25 4
gpt4 key购买 nike

我想要什么

如果有请求,我想发出一个事件;如果有响应,我想发出另一个事件,并在我的 App.vue 中监听它。

情况

我正在使用 VueResource 和内置拦截器:

import Vue from 'vue'
import VueResource from 'vue-resource'

Vue.http.interceptors.push((request, next) => {
next((response) => {
})

})

const app = new Vue({
render: h => h(App)
}).$mount('#app')

我尝试了什么

引导

Vue.http.interceptors.push((request, next) => {
Vue.emit('request', request)

next((response) => {
Vue.emit('response', response)
})
})

App.vue

<template>
<div v-on:request="doStuff">
<navigation-bar></navigation-bar>
<router-view></router-view>
</div>
</template>

我收到此错误:

TypeError: __WEBPACK_IMPORTED_MODULE_0_vue___default.a.$emit is not a function

<小时/>

讨论后的新App.vue

<template>
<div>
<router-view></router-view>
</div>
</template>

<script>
import EventBus from './EventBus'

export default {
created () {
EventBus.$on('request', this.invokeLoading())
EventBus.$on('response', this.stopLoading())
},

methods: {
invokeLoading () {
console.log('Start')
},

stopLoading () {
console.log('Stop')
},
}
}
</script>

最佳答案

您可以使用 eventBus处理这种情况如下:

import Vue from 'vue'
import VueResource from 'vue-resource'
import bus from 'path/to/event-bus'

Vue.http.interceptors.push((request, next) => {
bus.$emit('request', request)

next((response) => {
bus.$emit('response', response)
})

})

const app = new Vue({
render: h => h(App)
}).$mount('#app')

eventBus 可以这样创建:

import Vue from 'vue'

export default new Vue()

您可以阅读有关 eventBus 的更多信息es here .

您这样做的问题是:Vue是一个构造函数,它没有 emit方法本身。

<小时/>

要监听任何组件中发出的事件,您需要导入 eventBus。因此,假设应用程序组件:

import bus from 'path/to/event-bus'

export default {
created () {
bus.on('request', this.onRequest)
bus.on('response', this.onRequest)
},
methods: {
onRequest () {
// do something.
},
onResponse () {
// do something.
}
}
}

在这里,应用程序组件在创建时就开始监听这两个事件。您可以使用其他life-cycle Hook ,但由于这些事件是由单独的 Vue 发出的实例,即 bus你不能这样做:<div v-on:request="doStuff">...</div>

关于javascript - 如何在 Bootstrap 内使用 Vue.js 发出事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43435210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com