Vue.js 组件中未定义道具
Vue.js props not defined in Component
parent app
有一个 object messages
,正在从服务器正确填充。但是 chat-room
组件的道具 messages
不是来自 parent 的 messages
。我错过了什么??
这是我的 blade 模板:
<chat-room></chat-room>
<chat-composer v-on:messagesent="addMessage"></chat-composer>
这是我的 chat-room
组件:
<template>
<div class="chat-room">
<chat-message v-for="message in messages" :message="message"></chat-message>
</div>
</template>
<script>
export default {
props : ['messages'],
}
</script>
这是我的 app.js:
Vue.component('chat-message', require('./components/ChatMessage.vue'));
Vue.component('chat-room', require('./components/ChatRoom.vue'));
Vue.component('chat-composer', require('./components/ChatComposer.vue'));
const app = new Vue({
el: '#app',
data: {
messages: []
},
methods: {
addMessage(message) {
this.messages.push(message);
axios.post(base_url+'/room/1/write_message', message).then(response => { });
}
},
created() {
axios.get(base_url+'/room/1/messages').then(response => {
this.messages = response.data;
console.log(this.messages); //this returns an Array[4]!
});
}
});
您在 chat-room
组件中看不到消息的原因是您没有将它们传递给它。
变化:
<chat-room></chat-room>
成为:
<chat-room :messages="messages"></chat-room>
希望对您有所帮助!
parent app
有一个 object messages
,正在从服务器正确填充。但是 chat-room
组件的道具 messages
不是来自 parent 的 messages
。我错过了什么??
这是我的 blade 模板:
<chat-room></chat-room>
<chat-composer v-on:messagesent="addMessage"></chat-composer>
这是我的 chat-room
组件:
<template>
<div class="chat-room">
<chat-message v-for="message in messages" :message="message"></chat-message>
</div>
</template>
<script>
export default {
props : ['messages'],
}
</script>
这是我的 app.js:
Vue.component('chat-message', require('./components/ChatMessage.vue'));
Vue.component('chat-room', require('./components/ChatRoom.vue'));
Vue.component('chat-composer', require('./components/ChatComposer.vue'));
const app = new Vue({
el: '#app',
data: {
messages: []
},
methods: {
addMessage(message) {
this.messages.push(message);
axios.post(base_url+'/room/1/write_message', message).then(response => { });
}
},
created() {
axios.get(base_url+'/room/1/messages').then(response => {
this.messages = response.data;
console.log(this.messages); //this returns an Array[4]!
});
}
});
您在 chat-room
组件中看不到消息的原因是您没有将它们传递给它。
变化:
<chat-room></chat-room>
成为:
<chat-room :messages="messages"></chat-room>
希望对您有所帮助!