【发布时间】:2019-07-21 03:02:03
【问题描述】:
目前正在尝试围绕 Vue 和模板进行研究。
我读到您使用$emit() 传递来自child -> parent 的数据
app.js
Vue.component('tweet-postbox', require('./components/tweetPostBox.vue').default);
const app = new Vue({
el: '#app',
methods: {
addTweet (tweet) {
//from the tweetPostBox.vue postTweet method
console.log(tweet)
}
}
});
tweetPostBox.vue
<template>
<div class="post-box">
<div class="w-100 d-flex align-items-center">
<div class="profile-image rounded-circle"></div>
<input v-model="message" type="text" id="tweetText" placeholder="Whats happening?">
</div>
<div class="controls d-flex align-items-center w-100">
<button class="btn btn-primary ml-auto" @click="postTweet" id="postTweet">Tweet</button>
</div>
</div>
</template>
<script>
export default {
data: function () {
return {
message: ''
}
},
methods: {
postTweet: async function(){
let response = await axios.post('/post', {
message: this.message
})
//How to get this response data to the main vue instance?
this.$emit('addTweet', response);
}
}
}
</script>
我正在尝试将值从组件文件中获取到我的app.js...但控制台没有记录任何内容。我哪里错了?
更新:添加 HTML
<div class="container" id="app">
<tweet-postbox></tweet-postbox>
</div>
【问题讨论】:
-
您是如何创建
tweet-postbox组件的?在id为app的元素内使用模板,也许?您需要在那里注册监听器。您需要使用v-on或简写@来监听事件。 -
@skirtle 我更新了我的问题以显示 HTML
标签: javascript laravel vue.js