亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue組件數據傳遞、父子組件數據獲取,slot,router路由功能示例

2019-11-19 11:58:38
字體:
來源:轉載
供稿:網友

本文實例講述了vue組件數據傳遞、父子組件數據獲取,slot,router路由功能。分享給大家供大家參考,具體如下:

一、vue默認情況下,子組件也沒法訪問父組件數據

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa>    </aaa>  </div>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          data(){            return {              msg:'我是父組件的數據'            }          },          template:'<h2>我是aaa組件</h2><bbb></bbb>',          components:{            'bbb':{              template:'<h3>我是bbb組件->{{msg}}</h3>'//這里是子組件,是訪問不到父組件的數據msg            }          }        }      }    });  </script></body></html>

二、數據傳遞

組件數據傳遞:    √

1. 子組件獲取父組件data

在調用子組件:

<bbb :m="數據"></bbb>

子組件之內:

props:['m','myMsg']props:{  'm':String,  'myMsg':Number}

2. 父級獲取子級數據

*子組件把自己的數據,發送到父級
vm.$emit(事件名,數據);
v-on:    @

1、子組件獲取父組件data

方法一:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <template id="aaa">    <h1>11111</h1>    <bbb :mmm="msg2" :my-msg="msg"></bbb>  </template>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          data(){            return {              msg:111,              msg2:'我是父組件的數據'            }          },          template:'#aaa',          components:{            'bbb':{              props:['mmm','myMsg'],//my-msg在這里要變成駝峰命名法              template:'<h3>我是bbb組件->{{mmm}} <br> {{myMsg}}</h3>'            }          }        }      }    });  </script></body></html>

方法二:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <template id="aaa">    <h1>11111</h1>    <bbb :mmm="msg2" :my-msg="msg"></bbb>  </template>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          data(){            return {              msg:111,              msg2:'我是父組件的數據'            }          },          template:'#aaa',          components:{            'bbb':{              props:{                'm':String,//注明數據類型                'myMsg':Number              },              template:'<h3>我是bbb組件->{{mmm}} <br> {{myMsg}}</h3>'            }          }        }      }    });  </script></body></html>

2、 父級獲取子級數據

方法一:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <template id="aaa">    <span>我是父級 -> {{msg}}</span>    <bbb @child-msg="get"></bbb>  </template>  <template id="bbb">    <h3>子組件-</h3>    <input type="button" value="send" @click="send">  </template>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          data(){            return {              msg:'我是父組件的數據'            }          },          template:'#aaa',          methods:{            get(msg){              // alert(msg);              this.msg=msg;            }          },          components:{            'bbb':{              data(){                return {                  a:'我是子組件的數據'                }              },              template:'#bbb',              methods:{                send(){                  this.$emit('child-msg',this.a);                }              }            }          }        }      }    });  </script></body></html>

注意:

  • vm.dispatch(事件名,數據)子級向父級發送數據vm.dispatch(事件名,數據)子級向父級發送數據vm.broadcast(事件名,數據) 父級向子級廣播數據
  • 配合: event:{}
  • 在vue2.0里面已經,報廢了

slot:位置、槽口

作用: 占個位置,不覆蓋原先的內容

類似ng里面 transclude (指令)

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa>      <ul slot="ul-slot">        <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 id="aaa">    <h1>xxxx</h1>    <slot name="ol-slot">這是默認的情況</slot>    <p>welcome vue</p>    <slot name="ul-slot">這是默認的情況2</slot>  </template>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          template:'#aaa'        }      }    });  </script></body></html>

效果圖:

vue-> SPA應用,單頁面應用 vue-router路由

    vue-resouce    交互
    vue-router    路由
    路由:根據不同url地址,出現不同效果
    該課程配套用 0.7.13版本 vue-router
主頁    home
新聞頁    news

html:

  <a v-link="{path:'/home'}">主頁</a>  跳轉鏈接  展示內容:  <router-view></router-view>

js:

  //1. 準備一個根組件  var App=Vue.extend();  //2. Home News組件都準備  var Home=Vue.extend({    template:'<h3>我是主頁</h3>'  });  var News=Vue.extend({    template:'<h3>我是新聞</h3>'  });  //3. 準備路由  var router=new VueRouter();  //4. 關聯  router.map({    'home':{      component:Home    },    'news':{      component:News    }  });  //5. 啟動路由  router.start(App,'#box');

跳轉:

  router.redirect({    '/':'/home'  });

下載vue-router:

vue-router路由:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <script src="bower_components/vue-router/dist/vue-router.js"></script>  <style>  </style></head><body>  <div id="box">    <ul>      <li>        <a v-link="{path:'/home'}">主頁</a>      </li>      <li>        <a v-link="{path:'/news'}">新聞</a>      </li>    </ul>    <div>      <router-view></router-view>    </div>    </div>  <script>    //1. 準備一個根組件    var App=Vue.extend();    //2. Home News組件都準備    var Home=Vue.extend({      template:'<h3>我是主頁</h3>'    });    var News=Vue.extend({      template:'<h3>我是新聞</h3>'    });    //3. 準備路由    var router=new VueRouter();    //4. 關聯    router.map({      'home':{        component:Home      },      'news':{        component:News      }    });    //5. 啟動路由    router.start(App,'#box');  </script></body></html>

跳轉:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>  <script src="bower_components/vue-router/dist/vue-router.js"></script>  <style>  </style></head><body>  <div id="box">    <ul>      <li>        <a v-link="{path:'/home'}">主頁</a>      </li>      <li>        <a v-link="{path:'/news'}">新聞</a>      </li>    </ul>    <div>      <router-view></router-view>    </div>    </div>  <script>    //1. 準備一個根組件    var App=Vue.extend();    //2. Home News組件都準備    var Home=Vue.extend({      template:'<h3>我是主頁</h3>'    });    var News=Vue.extend({      template:'<h3>我是新聞</h3>'    });    //3. 準備路由    var router=new VueRouter();    //4. 關聯    router.map({      'home':{        component:Home      },      'news':{        component:News      }    });    //5. 啟動路由    router.start(App,'#box');    //6. 跳轉    router.redirect({      '/':'home' //訪問根目錄時,跳轉到/home    });  </script></body></html>

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。

希望本文所述對大家vue.js程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品毛片系列视频| 久久久亚洲福利精品午夜| 国产亚洲精品久久久优势| 亚洲精品资源美女情侣酒店| 欧美性在线视频| 91av在线播放视频| 国产视频自拍一区| 国模吧一区二区三区| 97精品欧美一区二区三区| 国产精品久久久久久中文字| 亚洲国产另类久久精品| 久久久久久久国产精品| 亚洲欧洲一区二区三区久久| 久久久久国产精品www| 2019最新中文字幕| 国产乱肥老妇国产一区二| 亚洲视频欧美视频| 91av网站在线播放| 国产精品久久久精品| 国产婷婷色综合av蜜臀av| 日韩av一区在线观看| 51午夜精品视频| 日韩av免费看| 久久久久久久久亚洲| 国产91色在线|| 这里只有精品丝袜| 亚洲xxxx18| 久久天天躁夜夜躁狠狠躁2022| 日韩在线观看av| 国产精品91在线| 黑人欧美xxxx| 亚洲欧美激情一区| 神马久久桃色视频| 国产欧美一区二区三区视频| 91精品国产自产在线| 亚洲视频专区在线| 国产自摸综合网| 国产精品久久一区| 在线观看日韩专区| 欧美黑人视频一区| 日韩精品免费一线在线观看| 亚洲欧美国产精品专区久久| 亚洲天天在线日亚洲洲精| 亚洲精品日韩欧美| 欧美大全免费观看电视剧大泉洋| 精品视频在线播放色网色视频| 日韩一中文字幕| 日韩高清不卡av| 精品国产成人av| 久久久久久久久久婷婷| 成人高清视频观看www| 亚洲精品97久久| 国产精品美女免费视频| 亚洲欧美一区二区三区情侣bbw| 欧美激情一二三| 欧美黑人视频一区| 欧美在线激情视频| 久久久影视精品| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品少妇网址| 狠狠躁天天躁日日躁欧美| 久久久www成人免费精品| 欧美激情2020午夜免费观看| 中文字幕亚洲二区| 亚洲人午夜精品免费| 国产欧美一区二区三区久久| 日韩精品亚洲精品| 国产成人一区二区三区电影| 国产精品第10页| 国产中文字幕亚洲| 久久精品久久精品亚洲人| 成人国产精品色哟哟| 96pao国产成视频永久免费| 国产午夜精品全部视频播放| 成人精品久久久| 国产精品成人av在线| 国产精品吹潮在线观看| 欧美日韩国产123| 亚洲九九九在线观看| 亚洲欧洲日本专区| 色爱精品视频一区| 国产精品成熟老女人| 午夜精品久久久久久久白皮肤| 国产精品香蕉在线观看| 亚洲人成在线观看| 一区二区在线免费视频| 精品亚洲男同gayvideo网站| 亚洲天堂日韩电影| 久久精品亚洲一区| 国产精品v日韩精品| 日韩精品视频在线观看免费| 精品欧美国产一区二区三区| 日韩精品日韩在线观看| 亚洲国产精品小视频| 亚洲精品国产拍免费91在线| 2019日本中文字幕| 国产精品96久久久久久又黄又硬| 亚洲国产精品成人va在线观看| 午夜精品久久久久久久99黑人| 日韩av在线最新| 亚洲成人av在线| 国产精品视频自拍| 久久精品国产一区二区电影| 欧美国产日韩xxxxx| 动漫精品一区二区| 国产精品久久久一区| 色偷偷av亚洲男人的天堂| 欧美巨乳在线观看| 亚洲人在线视频| 亚洲综合在线播放| 欧美电影免费观看高清完整| 欧美成人免费在线观看| 国产视频丨精品|在线观看| 日韩中文娱乐网| 亚洲精品v欧美精品v日韩精品| 亚洲伊人久久大香线蕉av| 欧美天天综合色影久久精品| 啊v视频在线一区二区三区| 日韩黄在线观看| 日韩av中文字幕在线播放| 午夜欧美大片免费观看| 亚洲变态欧美另类捆绑| 国产偷国产偷亚洲清高网站| 伊人伊人伊人久久| 欧美一级高清免费播放| 自拍视频国产精品| 91精品久久久久久久久久入口| 国产一区二区丝袜高跟鞋图片| 国产精品视频一区二区三区四| 日韩精品中文字幕久久臀| 91精品国产高清久久久久久91| 国产精品露脸av在线| 久久精品这里热有精品| 国产在线高清精品| 中文综合在线观看| 亚洲人成电影网站色| 亚洲**2019国产| 欧美综合第一页| 国产午夜精品一区二区三区| 国产精品美女999| 久久久精品国产| 中文字幕免费精品一区| 色久欧美在线视频观看| 久久久中精品2020中文| 国产a∨精品一区二区三区不卡| 欧美性视频精品| 欧美一区二区三区精品电影| 国产午夜精品麻豆| 欧美视频免费在线| 久久69精品久久久久久国产越南| 色系列之999| 亚洲美女中文字幕| 国产精品人成电影在线观看| 欧美理论电影在线播放| 在线观看不卡av| 久久久久久久一区二区三区| 久久久av免费| 久久久久一本一区二区青青蜜月| 亚洲欧美激情另类校园| 97视频免费在线看| 青青久久av北条麻妃黑人| 色吧影院999| 欧美成人免费一级人片100| 色综合视频一区中文字幕|