Vue中組件之間數(shù)據(jù)的傳遞的示例代碼
Vue中組件的作用域是隔離的,父組件中的數(shù)值子組件看不到!也就是說,用angular作比喻,組件的scope天生是scope:()的!
如果父組件需要往子組件中傳數(shù)據(jù),此時應(yīng)該使用標(biāo)簽屬性:
<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;
如果父組件中要傳一個動態(tài)的值(就是父組件的data,不是死數(shù)),此時要用v-bind:來傳遞。
v-bind指令表示動態(tài)屬性。
<div id="app"> <my-compo v-bind:c="c"></my-compo> </div>
此時我們研究,子組件改變了這個值,父組件的值變不變。答:默認(rèn)情況下不變!
<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值變化了,但是外面不變!
也就是說,默認(rèn)情況下,父組件中的屬性值如果傳給兒子,子組件改變這個值,僅僅改變子組件中的值,父組件中的值不變。
如果非要讓子組件能夠改變父組件中的值,要加sync修飾符:
<my-compo v-bind:c.sync="c"></my-compo>
上面的c屬性是一個基本類型值常數(shù)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學(xué)習(xí)</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。
總結(jié):
Vue中基本類型值默認(rèn)單向傳遞,雙向加sync。
引用類型值,默認(rèn)雙向傳遞。
小tip,v-bind的縮寫語法就是冒號。

屬性可以驗(yàn)證類型、必填等等。
props : {
"c" : null,
"d" : null,
"e" : {
type : Number,
required : true
}
},

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在 Vue 3 中設(shè)置 `@` 指向根目錄的幾種常見方法匯總
在 Vue 3 項(xiàng)目開發(fā)中,為了方便管理和引用文件路徑,設(shè)置 @ 指向根目錄是一項(xiàng)常見的需求,下面給大家分享在Vue3中設(shè)置 `@` 指向根目錄的方法匯總,感興趣的朋友一起看看吧2024-06-06
vue計(jì)算屬性無法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案
今天小編就為大家分享一篇vue計(jì)算屬性無法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue項(xiàng)目實(shí)現(xiàn)圖片懶加載的簡單步驟
懶加載的好處在于減少服務(wù)器的壓力,在網(wǎng)絡(luò)比較慢的情況下,可以提前給這張圖片添加一個占位圖片,提高用戶的體驗(yàn),這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目實(shí)現(xiàn)圖片懶加載的相關(guān)資料,需要的朋友可以參考下2022-09-09
echarts設(shè)置tootip輪播切換展示(vue3搭配vue-echarts粘貼即用)
這篇文章主要為大家介紹了echarts設(shè)置tootip輪播切換展示效果,vue3搭配vue-echarts粘貼即用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-10-10

