最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:30:51
文档

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

Vue中组件之间数据的传递的示例代码:Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的! 如果父组件需要往子组件中传数据,此时应该使用标签属性: <div id=app> <my-compo c=886>&l
推荐度:
导读Vue中组件之间数据的传递的示例代码:Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的! 如果父组件需要往子组件中传数据,此时应该使用标签属性: <div id=app> <my-compo c=886>&l


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中组件之间数据的传递的示例代码:Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的! 如果父组件需要往子组件中传数据,此时应该使用标签属性: <div id=app> <my-compo c=886>&l
推荐度:
标签: 数据 VUE 代码
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top