Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的! 如果父组件需要往子组件中传数据,此时应该使用标签属性:
子组件中,用props声明这个值即可。并且在template里面可以直接使用{{c}}来获得这个属性,而不需要写为{{this.props.c}}
export default MyCompo;
如果父组件中要传一个动态的值(就是父组件的data,不是死数),此时要用v-bind:来传递。 v-bind指令表示动态属性。
此时我们研究,子组件改变了这个值,父组件的值变不变。答:默认情况下不变!
import Vue from "vue";
const MyCompo = Vue.extend({
template : `
</div>
`,methods : {
add : function(){
this.c ++;
}
}
});
export default MyCompo;
子组件的c值变化了,但是外面不变!
也就是说,默认情况下,父组件中的属性值如果传给儿子,子组件改变这个值,仅仅改变子组件中的值,父组件中的值不变。
如果非要让子组件能够改变父组件中的值,要加sync修饰符:
上面的c属性是一个基本类型值常数3。此时我们试试引用类型值。
传给子组件:
<script type="text/javascript" src="public/bundle.js">