最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中各組件之間傳遞數(shù)據(jù)的方法示例

 更新時間:2017年07月27日 09:06:37   作者:北城以南  
Vue 的組件作用域都是孤立的,不允許在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。必須使用特定的方法才能實現(xiàn)組件之間的數(shù)據(jù)傳遞。下面這篇文章主要給大家介紹了關于vue中各組件之間傳遞數(shù)據(jù)的方法示例,需要的朋友可以參考學習。

前言

本文主要給大家介紹了關于vue組件之間傳遞數(shù)據(jù)的相關資料,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

作用域

在vue中,組件實例的作用域是孤立的,父組件模板的內(nèi)容在父組件作用域內(nèi)編譯;子組件模板的內(nèi)容在子組件作用域內(nèi)編譯。這意味著不能 (也不應該) 在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)。

下面幾種方法可以實現(xiàn)組件之間數(shù)據(jù)的傳遞。

一、通過prop傳遞數(shù)據(jù)

1)在子組件中,使用prop屬性,顯示的表明,它所需要的數(shù)據(jù)。

2)在父組件中,需要引用子組件的地方,傳入數(shù)據(jù)。

具體看下面的代碼:

<div id="app">
<my-item :value="value">//傳入數(shù)據(jù),注意引號里面的為父組件的數(shù)據(jù),
</my-item>
</div>  
Vue.component("my-item",{
 template:"<div>這是組件,{{value}}</div>",
 props:["value"],//聲明需要的數(shù)據(jù),HTML 特性是不區(qū)分大小寫的,所以此處如果為駝峰命名法,如:myMessage,則在模板中需要轉(zhuǎn)化為用斷線隔開的形式:my-Message
 data:function(){
  return {

  }
 },
 methods:{
  
 }
});

//創(chuàng)建vue實例
const vm=new Vue({
 el:"#app",
 data:{
  value:"這是父組件的數(shù)據(jù)",
 },
 methods:{
 
 },
});

這種方法適合父組件向子組件傳遞數(shù)據(jù),可以記為:你先告訴我要什么,然后我給你什么。

注意:這種方式是單向數(shù)據(jù)流,當父組件的屬性變化時,將傳導給子組件,但是不會反過來。當你想改變prop中數(shù)據(jù)時,可采用如下方法:定義一個局部變量,并用 prop 的值初始化它,或者使用計算屬性。

二、通過自定義事件

自定義事件可以實現(xiàn)子組件向父組件傳遞數(shù)據(jù),具體方法如下:

1)在子組件中使用$emit(eventName,[...args])觸發(fā)事件,傳遞數(shù)據(jù)

2)在父組件中$on(eventName,callback)監(jiān)聽事件,接受數(shù)據(jù)作為回調(diào)函數(shù)的參數(shù),并執(zhí)行回調(diào)函數(shù)。

其實這種方法和angular中控制器之間傳遞數(shù)據(jù)的有點類似的。注意觸發(fā)和監(jiān)聽事件的事件類型必須要保持一致,才可接受導數(shù)據(jù)。具體看下面的例子:

<div id="app">
{{number}}
<!-- 在用到子組件的地方監(jiān)聽,監(jiān)聽當前實例上的自定義事件 ,接受參數(shù),并執(zhí)行回調(diào)-->
<my-item v-on:cli="totlcli">
</my-item>
</div>

Vue.component("my-item",{
template:"<button v-on:click='add'>{{count}}</button>",
data:function(){
 return {
  count : 0,
 }
},
methods:{
 add:function(){
  this.count+=1;
  this.$emit("cli",this.count);//觸發(fā)當前實例上的事件。多個參數(shù)可以數(shù)組的形式傳遞
 }
}
});

//創(chuàng)建vue實例
const vm=new Vue({
el:"#app",
data:{
 number:""
},
methods:{
 totlcli:function(num){//這個回調(diào)在父組件監(jiān)聽到事件時,執(zhí)行的,其參數(shù)為觸發(fā)事件時傳遞的。
  return this.number=num;
 },
},
});

這樣就可以把子組件中的數(shù)據(jù)通過自定義事件的方式傳到了父組件。

三、使用slot分發(fā)內(nèi)容

主要應用場景是,混合父組件的內(nèi)容與子組件自己的模板時用到。具體使用步驟:

1)在子組件中,使用slot標簽作為組件模板之中的內(nèi)容分發(fā)插槽。 <slot> 元素自身將被替換。

2)在父組件中,使用slot屬性,用于標記往哪個slot中插入子組件內(nèi)容。

當name相同時,響應的內(nèi)容就會被插入到子組件中去
具體看下面的例子:

<div id="app">
 <my-item>
  <p slot="header">這是頭部</p>
  <p>這是多余的內(nèi)容,</p>
  <p slot="footer">這是尾部</p>
 </my-item>
</div>

Vue.component("my-item",{
  template:"<div>"+
    "<header><slot name='header'></slot></header>"+
    "<main><slot>備用插槽,當沒有備用內(nèi)容會顯示出來</slot></main>"+
    "<footer><slot name='footer'></slot></footer>"+
    "<div>",
  props:{
  },
  data:function(){
   return {   
   }
  }
 });
 const vm=new Vue({
  el:"#app",
  data:{
  },
  methods:{ 
  },
 });

渲染結(jié)構(gòu)如下:

注意:匿名(沒用name屬性)的slot元素,作為找不到匹配的內(nèi)容片段的備用插槽,即在父組件中沒有使用slot屬性的內(nèi)容會在這個備用插槽顯示。如果沒有默認的 slot,這些找不到匹配的內(nèi)容片段將被拋棄。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • vue如何獲取指定元素

    vue如何獲取指定元素

    這篇文章主要介紹了vue如何獲取指定元素,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue2中如何更改el-dialog出場動畫(el-dialog彈窗組件)

    vue2中如何更改el-dialog出場動畫(el-dialog彈窗組件)

    el-dialog是一個十分好用的彈窗組件,但是出場動畫比較單調(diào),于是決定自定義一個出場動畫,本文通過實例代碼圖文相結(jié)合給大家敘述下實現(xiàn)思路,感興趣的朋友一起看看吧
    2022-06-06
  • vue防止花括號{{}}閃爍v-text和v-html、v-cloak用法示例

    vue防止花括號{{}}閃爍v-text和v-html、v-cloak用法示例

    這篇文章主要介紹了vue防止花括號{{}}閃爍v-text和v-html、v-cloak用法,結(jié)合實例形式分析了vue.js使用v-text和v-html、v-cloak防止花括號{{}}閃爍的解決方法,需要的朋友可以參考下
    2019-03-03
  • vue實現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次

    vue實現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次

    這篇文章主要介紹了vue實現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vant如何修改placeholder樣式

    vant如何修改placeholder樣式

    這篇文章主要介紹了vant如何修改placeholder樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue登錄主頁動態(tài)背景短視頻制作

    Vue登錄主頁動態(tài)背景短視頻制作

    這篇文章主要為大家詳細介紹了Vue登錄主頁動態(tài)背景短視頻的制作方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue-router路由傳參的兩種方式詳解(params和query)

    vue-router路由傳參的兩種方式詳解(params和query)

    vue-router 是一個基于vue.js的路由器,它提供了強大的路由功能,能夠幫助開發(fā)者快速構(gòu)建單頁應用程序,本文將詳細介紹 vue-router 路由傳參的方法,包括路由傳參的概念、路由傳參的方法、路由傳參的應用場景等,需要的朋友可以參考下
    2024-12-12
  • vue 實現(xiàn)在函數(shù)中觸發(fā)路由跳轉(zhuǎn)的示例

    vue 實現(xiàn)在函數(shù)中觸發(fā)路由跳轉(zhuǎn)的示例

    今天小編就為大家分享一篇vue 實現(xiàn)在函數(shù)中觸發(fā)路由跳轉(zhuǎn)的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 解決vue?eslint開發(fā)嚴格模式警告錯誤的問題

    解決vue?eslint開發(fā)嚴格模式警告錯誤的問題

    這篇文章主要介紹了解決vue?eslint開發(fā)嚴格模式警告錯誤的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • JS圖片懶加載庫VueLazyLoad詳解

    JS圖片懶加載庫VueLazyLoad詳解

    這篇文章主要為大家介紹了JS圖片懶加載庫VueLazyLoad示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

湖州市| 高雄市| 永年县| 崇义县| 常山县| 边坝县| 罗源县| 汕尾市| 循化| 威信县| 景德镇市| 绥德县| 娄烦县| 新野县| 柘城县| 古田县| 京山县| 九江县| 绥棱县| 兴和县| 喀喇| 扶绥县| 大竹县| 花垣县| 金寨县| 洞头县| 镇宁| 南汇区| 临泽县| 平顶山市| 黄骅市| 清水县| 交口县| 邹城市| 武强县| 登封市| 金川县| 类乌齐县| 云和县| 星子县| 兴国县|