如何在不同模板之间传递数据

时间:2017-07-30 20:33:43

标签: vue.js

我正在尝试聊天,但我不知道如何点击一个模板中的项目 获取数据并将其传输到另一个。 从#template1到#template2

const app = new Vue({
    el: '#content',
    data:{
      users: [],
      messages: []
    }
});

模板1

<template lang="html">
<li v-on:click="getMessages()">
  <div class="content-container">
    <span class="name">{{ user.first_name}} {{user.last_name}}</span>
    <span class="txt"></span>
  </div>
</li>
</template>


<script>
export default {
props: ['user'],
data: function() {
    return {
      messages: []
    };
  },


methods: {
getMessages(id) {
    this.$http.get('/admin/chat/messages').then(function(res){
        this.messages = res.data;
    }
    },
}
}
</script>

模板2

<template lang="html">
<ul class="chat">
  <chat-message v-for="message in messages" :key="+message" :message="message"></chat-message>
</ul>
</template>


<script>
export default {
  props: ['messages']
}
</script>

如何在此模板之间传递数据

结构是:

el: #content
<div id="content">

    <div class="list-text" id="chatbox">
      <user-list :users="users">#template1</user-list>
    </div>

    <div class="list-chat">
      <chat-log :messages="messages">#template2</chat-log>
      <chat-composer v-on:messagesent="addMessage"></chat-composer>
    </div>

</div>

当我点击用户列表中的用户时 我试图加载来自该用户的消息 我不知道如何在聊天记录中传递它们

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现组件之间的通信

  1. 发出并听取事件(如果组件是兄弟姐妹,则必须通过父级) - 如果您只需要很少的组件需要相互通信,这个解决方案就没问题了
  2. 使用事件总线 - &gt;每个事件都将通过这条总线(好tutorial关于如何创建一个事件总线)
  3. 使用vuex - 状态管理(就像事件总线一样,但如果你有很多组件通信则更好)