一、組件間的數(shù)據(jù)傳遞
在通化縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),通化縣網(wǎng)站建設(shè)費用合理。
1.父組件獲取子組件的數(shù)據(jù)
*子組件把自己的數(shù)據(jù),發(fā)送到父級
*vm.$emit(事件名,數(shù)據(jù));
*v-on: @
示例用法:當(dāng)點擊send按鈕的時候,“111”變成“我是子組件的數(shù)據(jù)”
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父級獲取子級的數(shù)據(jù)</title> <script src="bower_components/vue/dist/vue.js"></script> <style> </style> </head> <body> <div> <aaa> </aaa> </div> <template> <span>我是父級 -> {{msg}}</span> //自動調(diào)用get方法,@child-msg和下面的this.$emit('child-msg',this.a)相對應(yīng) <bbb @child-msg="get"></bbb> </template> <template> <h4>子組件-</h4> <input type="button" value="send" @click="send"> </template> <script> var vm=new Vue({ el:'#box', data:{ a:'aaa' }, components:{ 'aaa':{ data:function(){ return { msg:111, msg2:'我是父組件的數(shù)據(jù)' } }, template:'#aaa', methods:{ //這里的msg實際上就是子組件傳遞給父組件的數(shù)據(jù) get:function(msg){ this.msg=msg; } }, components:{ 'bbb':{ data:function(){ return { a:'我是子組件的數(shù)據(jù)' } }, template:'#bbb', methods:{ send:function(){ this.$emit('child-msg',this.a); } } } } } } }); </script> </body> </html>
2、子組件獲取父組件的數(shù)據(jù)
在調(diào)用子組件:
<bbb :m="數(shù)據(jù)"></bbb>
子組件之內(nèi):
props:['m','myMsg'] props:{ 'm':String, 'myMsg':Number }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自己獲取父級的數(shù)據(jù)</title> <script src="bower_components/vue/dist/vue.js"></script> <style> </style> </head> <body> <div> <div>{{a}}</div> <aaa> {{msg}} </aaa> </div> <template> <h2>11111</h2> <bbb :mmm="msg2" :my-msg="msg"></bbb> </template> <script> var vm=new Vue({ el:'#box', data:{ a:'a' }, components:{ 'aaa':{ data:function(){ return { msg:111, msg2:'我是父組件的數(shù)據(jù)' } }, template:'#aa', components:{ 'bbb':{ props:{ 'mmm':String, 'myMsg':Number }, template:'<h4>我是bbb組件->{{mmm}} <br> {{myMsg}}</h4>' } } } } }); </script> </body> </html>
運行結(jié)果:
二、內(nèi)容分發(fā):
Vue.js提供了一種混合父組件內(nèi)容與子組件自己模版的方式:slot,用來占一個位置
1、基本用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>slot保留原來的位置</title> <script src="bower_components/vue/dist/vue.js"></script> <style> </style> </head> <body> <div> <aaa> <ul> <li>1111</li> <li>2222</li> <li>3333</li> </ul> </aaa> <hr> <aaa> </aaa> </div> <template> <h2>xxxx</h2> <slot>這是默認(rèn)的情況</slot> <p>welcome vue</p> </template> <script> var vm=new Vue({ el:'#box', data:{ a:'aaa' }, components:{ 'aaa':{ template:'#aaa' } } }); </script> </body> </html>
運行結(jié)果:ul標(biāo)簽里面的內(nèi)容沒有被覆蓋,如果不使用slot,ul標(biāo)簽里的內(nèi)容將會被覆蓋
2、slot的name屬性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>slot中name屬性的使用</title> <script src="bower_components/vue/dist/vue.js"></script> <style> </style> </head> <body> <div> <aaa> <ul slot="ul-slot"> //這里slot的名字要與下面slot中name屬性相對應(yīng) <li>1111</li> <li>2222</li> <li>3333</li> </ul> <ol slot="ol-slot"> //用法同上 <li>111</li> <li>222</li> <li>333</li> </ol> </aaa> <hr> <aaa> </aaa> </div> <template> <h2>xxxx</h2> <slot name="ol-slot">這是默認(rèn)的情況</slot> //設(shè)置name屬性,給slot命名 <p>welcome vue</p> <slot name="ul-slot">這是默認(rèn)的情況2</slot> </template> <script> var vm=new Vue({ el:'#box', data:{ a:'aaa' }, components:{ 'aaa':{ template:'#aaa' } } }); </script> </body> </html>
運行結(jié)果:
網(wǎng)頁名稱:詳解vue.js數(shù)據(jù)傳遞以及數(shù)據(jù)分發(fā)slot
文章轉(zhuǎn)載:http://aaarwkj.com/article16/gdiegg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站排名、、服務(wù)器托管、品牌網(wǎng)站設(shè)計、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)