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

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

rush:xhtml;">

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

rush:js;"> import Vue from "vue";

const MyCompo = Vue.extend({
template : `

我是MyCompo组件,我的a值是{{a}}

子组件c:{{c}}

`,props : ["c"],data : function(){ return { a : 1,b : 2 } },methods : { add : function(){ this.a ++; } } });

export default MyCompo;

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

rush:xhtml;">

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

rush:js;">

import Vue from "vue";

const MyCompo = Vue.extend({
template : `

我是MyCompo组件,我的a值是{{a}},我的c值是:{{c}}

</div>

`,methods : {
add : function(){
this.c ++;
}
}
});

export default MyCompo;

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

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

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

rush:xhtml;">

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

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

rush:js;"> import Vue from "vue"; import MyCompo from "./components/MyCompo.js";

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

传给子组件:

rush:xhtml;"> <Meta charset="UTF-8"> Vue学习
我是父亲,我的c: {{c}} ,我的d:{{d | json}}

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

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

总结:

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

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

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

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

rush:js;"> props : { "c" : null,"d" : null,"e" : { type : Number,required : true } },

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

相关文章

可以通过min-width属性来设置el-table-column的最小宽度。以...
yarn dev,当文件变动后,会自动重启。 yanr start不会自动重...
ref 用于创建一个对值的响应式引用。这个值可以是原始值(如...
通过修改 getWK005 函数来实现这一点。这里的 query 参数就是...
&lt;el-form-item label=&quot;入库类型&quot; ...
API 变动 样式类名变化: 一些组件的样式类名有所变动,可能需...