那么现在问题来了,我现在是在index.vue获取了服务端的数据,怎么传值到maincontent.vue?当然你也可以把获取数据放在maincontent.vue,但假如有些数据同时在header,footer,maincontent.vue被引用,如果每个compnent都去请求,就太费性能了。这时候需要用到vue的组件之间传值的特性。先从简单的,index.vue 传值到 maincontent.vue。

1.Index.vue修改如下:

2.MainContent.vue修改如下:

<template>
  <div class="mainContent">
  <div class="title-view">
  <h4>{{tdInfo.title}}</h4>
  </div>
<div class="data-view clearfix" style="border-bottom: 0.01rem solid #ebeaea;">
  <div class="middle-data">
    <p class="price">{{tdInfo.price}}</p><span>租金</span>
  </div>
  <div class="middle-data">
    <p class="price">{{tdInfo.type}}</p><span>房型</span>
  </div>
  <div class="right-data">
    <p class="square">{{tdInfo.square}}}<sup>2</sup></p><span>面积</span>
  </div>
</div>
<div class="section keyword-section">
  <p>
    <span class="infoCard keyWord">床</span>
    <span class="infoCard keyWord">可做饭</span>
    <span class="infoCard keyWord">独立卫生间</span>
    <span class="infoCard keyWord">随时看房</span>
  </p>
</div>
<div class="section">
<div class="title">
  <h5 style="display:inline-block;margin:0;font-weight: bold;font-size: 1.2rem">打电话时说是在<b style="color:red;">XXXX</b>看到的~</h5>
</div>
</div>
  <div class="section">
  <div class="title">出租房基本信息</div>
    <div class="info-content">
      <p><span>单价:</span>{{tdInfo.danjia}}元/m<sup>2</sup></p>
      <p><span>小区:</span>{{tdInfo.xiaoqu}}</p>
      <p><span>楼层:</span>{{tdInfo.floor}}</p>
      <p><span>房屋类型:</span>{{tdInfo.fwtype}}</p>
      <p><span>朝向:</span>{{tdInfo.toward}}</p>
      <p><span>装修:</span>{{tdInfo.decor}}</p>
      <p><span>押金:</span>{{tdInfo.deposit}}</p>
      <p><span>联系人:</span>{{tdInfo.linkman}}</p>
      <p><span>区域:</span>{{tdInfo.area}}</p>
      <p><span>房源ID:</span>{{tdInfo.fid}}</p>
    </div>
</div>
  <div class="section">
  <div class="title">小区信息</div>
    <div class="info-content">
      <p><span>房源小区:</span>{{tdInfo.xiaoqu}}</p>
      <p><span>小区地址:</span>{{tdInfo.address}}</p>
    </div>
  </div>
    <div class="section">
      <div class="title">出租房描述</div>
        <div class="info-content" style="text-align:left;padding:1rem;">{{tdInfo.desc}} </div>
      </div>
      <div class="agent-view">
      <dl>
        <dt class="agent-head">
          <img src="{{tdInfo.headimg}}" alt="">
        </dt>
        <dd class="agent-detail">
          <h4 style="font-size: 1.5rem;font-weight: normal;">{{tdInfo.faburen}} </h4>
          <p>个人发布者</p>
        </dd>
        <dd class="more-indicator" style="display: none;"><span class="detail-indicator iconfont icon-iconfontxiangxia1copy19"></span>
        </dd>
       </dl>
</div>
    <div class="section">
    <p style="text-align: center;margin-top: 10px;font-family: bold;color: #18c9ac;padding: 5px;line-height: 2rem;">关注我们获取更多房源</p>
    <div style="text-align: center;padding: 5px;">
      <img src="https://www.vyuan8.com/vyuan_fangchan/public/uploads/10079/20180618/7e28ebffe1430cb566ac8a4212031aa5.jpg" alt="" style="max-width: 100%;max-height:240px;">
    </div>
  </div>
</div>
</template>
<script>
export default {
  props:["tdInfo"],
  data(){
  return{}
  }
}
</script>

刷新发现报错了

这里是vue的属性用错了

改成这样

<dt class="agent-head">
  <img :src=tdInfo.headimg alt="">
</dt>

3.顺便熟悉下v-for

<span class="infoCard keyWord" v-for="(item,index) in tdInfo.keyWord" :key="index">{{item.word}}</span>

4.刷新就可以出现效果,这里只是用到单向的数据传值,还没有交互,假如我在maincontent.vue对tdInfo进行了修改,index.vue或者footer.vue的数据怎么联动?

 可以直接先尝试修改,看能不能共享数据。结果是不行的,这时候要用到vue的store特性

5.先在根目录新建store文件夹,新建index.js,编码如下

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = () => new Vuex.Store({
  state: {
    tdInfo:{}
  },
  mutations: {
    newTdInfo(state, result) {
      state.tdInfo = result
    }
  }
})
export default store

先在maincontent加个click按钮

运行报错state未定义,重新npm run dev下

点击有效果:

6.但是footer的号码显示没有变化,给footer增加一个watch

刷新效果如下:

8.【nuxt起步】-vue组件之间数据交互的更多相关文章

  1. Vue组件之间数据交互与通信

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 一.父组件向子组件传递数据 在 Vue 中,可以使用 props 向子组件传 ...

  2. Vue中独立组件之间数据交互

    独立组件之间数据交互:通过自定义事件 组件A中的[数据],传递给组件B 1.创建组件A,组件B 2.组件B在实例创建完成时就开始监听事件[等待接收数据]:钩子 3.组件A中触发事件,发送数据 注意:接 ...

  3. 04 . Vue组件注册,数据交互,调试工具及组件插槽介绍及使用

    vue组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的 ...

  4. vue组件之间数据的传递

    父子组件通信 父组件向子组件传递数据: 1.通过子组件的 props 选项声明它期待获得的数据,用以接收父组件传过来的值. 2.在子组件标签中使用子组件props中创建的属性 3.父组件中注册子组件 ...

  5. vue 组件之间数据传递(七)

    1.props:父组件 -->传值到子组件 app.vue是父组件 ,其它组件是子组件,把父组件值传递给子组件需要使用 =>props 在父组件(App.vue)定义一个属性(变量)sex ...

  6. 13. VUE 组件之间数据传递

    组件数据传递: 父组件向内传递属性---动态属性 子组件向外发布事件 solt 插槽传递模板---具名solt 1. 父组件向子组件传递数据 子组件在父组件的并作为标签引入,通过设置标签的属性传递数据 ...

  7. 04 . Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用

    vue组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的 ...

  8. 面向UI编程:ui.js 1.1 使用观察者模式完成组件之间数据流转,彻底分离组件之间的耦合,完成组件的高内聚

    开头想明确一些概念,因为有些概念不明确会导致很多问题,比如你写这个框架为什么不去解决啥啥啥的问题,哎,心累. 什么是框架? 百度的解释:框架(Framework)是整个或部分系统的可重用设计,表现为一 ...

  9. vuex-- Vue.的中心化状态管理方案(vue 组件之间的通信简化机制)

    vuex-- Vue.的中心化状态管理方案(vue 组件之间的通信简化机制) 如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 .vuex就是为了解决组件通信问题的. ...

随机推荐

  1. [转载]C语言头文件的作用

    最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学 习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的思考过.概念上还是 ...

  2. P3369 【模板】普通平衡树 Treap

    P3369 [模板]普通平衡树(Treap/SBT) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询 ...

  3. Python虚拟机框架

    Python字节码 我们知道,Python源代码在执行前,会先将源代码编译为字节码序列,Python虚拟机就根据这些字节码进行一系列的操作,从而完成对Python程序的执行.在Python2.5中,一 ...

  4. 20,序列化模块 json,pickle,shelve

    序列化模块 什么叫序列化? 将原本的字典,列表等内容转换成一个字符串的过程叫做序列化. 序列化的目的? 数据结构 通过序列化 转成 str. str 通过反序列化 转化成数据结构. json: jso ...

  5. 玩App怎么赚钱(二)

    紧接上篇文章,谈到App前赚钱的一些门道,其实还有很多了,需要你自己去挖掘App到底有什么价值.有价值的东西就能形成交易,而交易的过程中是用金钱作为流通手段,所以说赚钱没那么高大上,它的本质就是价值的 ...

  6. 实施生成树 STP 高级

    一.生成树协议的演化 生成树协议可以识别防止二层环路 本节介绍每VLAN快速生成树增强版 PVRST+   和多生成树MST   如何配置协议   以及配置生成树系诶稳定性机制 1.生成树协议的演化 ...

  7. JDBC初探(一)

    下载好JDBC之后,首先做的应该是查看它的文档 打开connector-j.html import java.sql.Connection; import java.sql.DriverManager ...

  8. Android中如何截取字符串中某个字符之前或之后的字符串

    代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...

  9. 【Luogu】P3565HOT-Hotels(树形DP)

    题目链接 水了半个月之后Fd终于开始做题啦! 然后成功的发现自己什么都不会了 树形DP,既然是三个点两两距离相等那一定得有个中心点吧,枚举那个中心点,然后暴力DFS,根据乘法原理算. 乘法原理就是我一 ...

  10. 【P2387】魔法森林(SPFA非正解)

    题目链接 不会LCTqwq,看题解似乎SPFA也可以. 把边按a排序,从小到大每加一条边就以b为距离跑一遍SPFA,类似于Kruskal的想法吧…… 貌似是个暴力 (luoguLCT模块的题我都快通过 ...