全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue中组件之间数据的传递的示例代码

Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的!
如果父组件需要往子组件中传数据,此时应该使用标签属性:

<div id="app">
   <my-compo c="886"></my-compo>
</div>

子组件中,用props声明这个值即可。并且在template里面可以直接使用{{c}}来获得这个属性,而不需要写为{{this.props.c}}

import Vue from "vue";

const MyCompo = Vue.extend({
  template : `
    <div>
      <h1>我是MyCompo组件,我的a值是{{a}}</h1>
      <h1>子组件c:{{c}}</h1>
      <input type="button" value="+++" v-on:click="add"/>
    </div>
  `,
  props : ["c"],
  data : function(){
    return {
      a : 1, 
      b : 2
    }
  },
  methods : {
    add : function(){
      this.a ++;
    }
  }
});

export default MyCompo;

如果父组件中要传一个动态的值(就是父组件的data,不是死数),此时要用v-bind:来传递。
v-bind指令表示动态属性。

<div id="app">
   <my-compo v-bind:c="c"></my-compo>
</div>

此时我们研究,子组件改变了这个值,父组件的值变不变。答:默认情况下不变!

<my-compo v-bind:c="c"></my-compo>

import Vue from "vue";

const MyCompo = Vue.extend({
  template : `
    <div>
      <h1>我是MyCompo组件,我的a值是{{a}},我的c值是:{{c}}</h1>
      <input type="button" value="+++" v-on:click="add"/>

    </div>
  `,
  props : ["c"],
  methods : {
    add : function(){
      this.c ++;
    }
  }
});

export default MyCompo;

子组件的c值变化了,但是外面不变!

也就是说,默认情况下,父组件中的属性值如果传给儿子,子组件改变这个值,仅仅改变子组件中的值,父组件中的值不变。

如果非要让子组件能够改变父组件中的值,要加sync修饰符:

<my-compo v-bind:c.sync="c"></my-compo>

上面的c属性是一个基本类型值常数3。此时我们试试引用类型值。

父组件中增加d属性,值是json。

import Vue from "vue";
import MyCompo from "./components/MyCompo.js";

new Vue({
  el : "#app",
  data : {
    c : 333,
    d : {
      v : 8888
    }
  },
  components : {
    "my-compo" : MyCompo
  }
});

传给子组件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue学习</title>
</head>
<body>
  <div id="app">
    <h1>我是父亲,我的c: {{c}} ,我的d:{{d | json}}</h1>
     <my-compo v-bind:c.sync="c" v-bind:d="d"></my-compo>
  </div>

  <script type="text/javascript" src="public/bundle.js"></script>
</body>
</html>

子组件改变d的时候,父亲也变了!!!虽然我们没加.sync。

总结:

Vue中基本类型值默认单向传递,双向加sync。

引用类型值,默认双向传递。

小tip,v-bind的缩写语法就是冒号。

属性可以验证类型、必填等等。

props : {
    "c" : null,
    "d" : null,
    "e" : {
      type : Number,
      required : true
    }
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # 组件传递数据  # vue.js组件传递数据  # 组件之间数据传递  # vue中各组件之间传递数据的方法示例  # vue.js组件之间传递数据的方法  # 详解vue2父组件传递props异步数据到子组件的问题  # vue子组件使用自定义事件向父组件传递数据  # Vue2.x中的父组件传递数据至子组件的方法  # Vue.js实战之组件之间的数据传递  # vue父子组件的数据传递示例  # Vue2.0组件间数据传递示例  # vuejs动态组件给子组件传递数据的方法详解  # 我是  # 是一个  # 也就是说  # 情况下  # 要用  # 可以直接  # 要让  # 中要  # 必填  # 大家多多  # 要写  # 中传  # 而不需  # 改变了  # 修饰符  # input  # br  # extend  # class  # pre 


相关文章: 如何打造高效商业网站?建站目的决定转化率  如何选择高性价比服务器搭建个人网站?  网站制作员失业,怎样查看自己网站的注册者?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  已有域名如何快速搭建专属网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  如何快速查询域名建站关键信息?  西安专业网站制作公司有哪些,陕西省建行官方网站?  nginx修改上传文件大小限制的方法  建站之星如何助力企业快速打造五合一网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  定制建站是什么?如何实现个性化需求?  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何用美橙互联一键搭建多站合一网站?  如何挑选最适合建站的高性能VPS主机?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何用狗爹虚拟主机快速搭建网站?  建站之星各版本价格是多少?  如何在宝塔面板中创建新站点?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  建站之星微信建站一键生成小程序+多端营销系统  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  建站之星如何防范黑客攻击与数据泄露?  网站代码制作软件有哪些,如何生成自己网站的代码?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星备案是否影响网站上线时间?  如何在Tomcat中配置并部署网站项目?  如何配置WinSCP新建站点的密钥验证步骤?  如何彻底卸载建站之星软件?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何在阿里云香港服务器快速搭建网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  免费视频制作网站,更新又快又好的免费电影网站?  中山网站推广排名,中山信息港登录入口?  如何选择域名并搭建高效网站?  如何快速搭建高效简练网站?  建站之星会员如何解锁更多建站功能?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  在线制作视频的网站有哪些,电脑如何制作视频短片?  建站之星如何配置系统实现高效建站?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  深圳网站制作的公司有哪些,dido官方网站?  如何在腾讯云服务器上快速搭建个人网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何实现建站之星域名转发设置?  宝塔建站无法访问?如何排查配置与端口问题?  湖北网站制作公司有哪些,湖北清能集团官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。