1. 程式人生 > >vue 之prop與$emit的用法

vue 之prop與$emit的用法

1、vue元件Prop傳遞資料:

 元件例項的作用域是孤立的,這意味著不能在子元件的模板內直接引父元件的資料,如果要讓子元件使用父元件的資料,則需要通過子元件的prop選項;prop是單向繫結的,當父元件的屬性變化時,將傳遞給子元件,但是反過來不行;這樣主要是防止子元件無意修改父元件的狀態;每次父元件更新時,子元件的所有prop都會更新為最新值。這意味著你不能在子元件內部改變prop。

2、子元件可以使用 $emit 觸發父元件的自定義事件。

vm.$emit( event, arg ):傳送資料,第一個引數是傳送資料的名稱,接收時還用這個引數接收,第二個引數是這個資料現在的位置

拓展:

vm.$on( event, fn ):接收資料,第一個引數是資料的名稱,與傳送時的名字對應,第二個引數是一個方法,要對資料的操作

父元件:

<template>
  <div>
     <div>父元件的addName:{{addrName}}</div>
    <child-prop @showAddrName="updateAddrName" :sendData="addrName"></child-prop>
  </div>
</template>

<script>
  import childProp from "./childProp";
  export default {
    name:'index',
    components: {childProp},
    data () {
      return {
        addrName:"北京"
      }
    },
    methods:{
      updateAddrName(data){//觸發子元件城市選擇-選擇城市的事件
        console.log(data);
        this.addrName = data.addrName;//改變了父元件的值
        console.log('toCity:'+this.addrName)
      }
    }
  }
</script>

子元件:

<template>
  <div>
    <h3>父元件傳給子元件的addrName:{{sendData}}</h3>
    <br/><button @click='addr(`上海`)'>點選此處將‘上海’發射給父元件</button>
  </div>
</template>
<script>
  export default {
    name:'childProp',
    props:["sendData"], // 用來接收父元件傳給子元件的資料
    methods:{
      addr(val) {
        let data = {
          addrName: val
        };
        this.$emit('showAddrName',data);//select事件觸發後,自動觸發showCityName事件
      }
    }
  }
</script>

相關推薦

vue prop$emit用法

1、vue元件Prop傳遞資料:  元件例項的作用域是孤立的,這意味著不能在子元件的模板內直接引父元件的資料,如果要讓子元件使用父元件的資料,則需要通過子元件的prop選項;prop是單向繫結的,當父元件的屬性變化時,將傳遞給子元件,但是反過來不行;這樣主要是防止子元件無意

Vuemixin全域性的用法詳解

個人覺得全域性mixin就是給全部Vue檔案新增一些公用的例項(方法,過濾器and so on) 使用場景:貨幣單位,時間格式。這些如果在用到的頁面使用的話程式碼會重複的很多,所以在全域性混入這些例項會減少程式碼量,可維護性也比較高。 ex: step1: 先定義mixin.js

vue中$on和$emit用法理解

很期待奇門遁甲這部電影,誰是老大?伍佰一開口就彷彿回到了挪威的森林、突然的自我時代,哈哈哈,且看我獨孤九劍向天涯…… 迴歸正題,在vue中有這樣的一個方法,$on,$emit,就在開發中,我用的比較多的是$emit,對,就是傳遞一個函式方法。用過的人都知道!! 今天在走查專

Vue.jsProp基本用法(一)

①元件例項的作用域: 是孤立的,簡單的來說,元件和元件之間,即使有同名屬性,值也不共享。 <div id="app"> <add></add> <del></del> &

Vueclass的用法

隱藏 htm ... cti mob scrip head span 使用總結 Vue中class的使用總結如下: 使用形式v-bind:class 簡寫:class 1.在數組中使用一個class <!DOCTYPE html> <html la

vuewatch用法

example method cli $watch def pyc 技術 實例 ner 對應一個對象,鍵是觀察表達式,值是對應回調。值也可以是方法名,或者是對象,包含選項。在實例化時為每個鍵調用 $watch() ; //使用官方vue-cli腳手架書寫<te

vueslot用法

highlight port one scrip 用法 har component 技術 src slot元素作為組件模板之中的內容分發插槽。這個元素自身將被替換。 有 name 特性的 slot 稱為具名 slot。 有 slot 特性的內容將分發到名字相匹配的具名 s

vue 原始碼解析 data的省略用法

var vu = new vue( { data() { name: kk age: 123 } }) vue中獲取 name 有如下幾種寫法, 1 vu.name 2 vu.$data.name 其實他們實際都是獲取的 vu._data.name 第一種的原始碼在 function initDa

vuefilter用法

1、全域性寫法:   全域性過濾器必須寫在vue例項建立之前。 Vue.filter('testfilter', function (value,text) { // 返回處理後的值 return value+text }) 2、區域性寫法: 在元件例項物件裡掛載。

Vue父子元件間通訊例項講解(props、$ref、$emit)

元件是 vue.js 最強大的功能之一,而元件例項的作用域是相互獨立的,這就意味著不同元件之間的資料無法相互引用。那麼元件間如何通訊,也就成為了vue中重點知識了。這篇文章將會通過props、$ref和 $emit 這幾個知識點,來講解如何實現父子元件間通訊。   在說如何實現通訊

vuestore中屬性更新用法

//1.首先定義store物件下的屬性 state: {   data:'測試資料' } // 2.定義更改data資料的方法 mutations: { updatedata(state, p) { state.data = p } } //3.在元

vuewatch的用法

最近在做一個H5的專案。 需求是當用戶在輸入完了手機號和驗證碼之後,登入按鈕才可以點選。 在沒有使用vue之前,我們可能是通過input的change事件來判斷,使用者是否輸入了內容,然後修改按鈕的狀態。現在有了vue,就省事了很多,我們只需要在watch中,

Vuestyle的用法

Vue中style的用法總結如下: v-bind:style  簡寫:style 1.基本用法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

angular$broadcast、$emit、$on傳值

4.6 分享 方法 一個 ng-click onclick 技術 ctrl onf 文件層級 index.html <!DOCTYPE html> <html ng-app="nickApp"> <head>

Vuevue.js聲明式渲染

這一 logs 類型檢測 body 表達式 頁面 渲染 strong setter Html: <div id="app"> {{ message }} </div> Vue: var app = new Vue({ el: ‘#

基礎知識 - C# Using的用法

spa 方案 image acl 決定 ogr 托管 sid 引入 C#裏面Using有兩種用法: 1.作為指令。 using+命名空間,導入其他命名空間中定義的類型,這樣可以在程序中直接用命名空間中的類型,不必指定命名空間; 命名空間是.NET程序在邏輯上

【22】Vue Vue Devtools

rom 創建 png ins -c 擴展程序 安裝 搜索 項目 vue安裝: # 最新穩定版 $ npm install vue # 全局安裝 vue-cli $ npm install --global vue-cli # 創建一個基於 webpack 模板的新項目 $

ios開發--CAKeyframeAnimation的詳細用法

edi true nco 創建 rds repeat oval iat ima 簡單的創建一個帶路徑的動畫效果,比較粗糙,不過事先原理都是一樣的, 代碼如下: 1,創建動畫所需的view -(void)creatView { moveView = [UIView

初學安卓開發隨筆 Menu、toast 用法、活動的四種啟動模式 以及 一個方便的Base活動類使用方法

pro 一點 cte edi standard oid nal xtend 解釋 Toast toast 是安卓系統的一種非常棒的提醒方式 首先定義一個彈出Toast的觸發點,比如可以是按鈕之類 其中 Toast.LENGTH_SHORT是指顯示時長 還有一個內置變量為To

SQLcase when then用法(用於分類統計)

char purge 格式 但是 統計 spa 比較 log 永遠 ase具有兩種格式。簡單case函數和case搜索函數。 --簡單case函數 case sex when ‘1‘ then ‘男‘ when ‘2‘ then ‘女’