1. 程式人生 > >vue父子元件通訊

vue父子元件通訊

父子元件通訊

父元件

<div id="prop-example-2">
  <child :string="string" :obj="obj" :name.sync="name" @changString="changString"></child>
</div>

注意在 JavaScript 中物件和陣列是引用型別,指向同一個記憶體空間,如果 prop 是一個物件或陣列,在子元件內部改變它會影響父元件的狀態。
資料分為引用型別和基本型別,基本型別的資料只有在父元件中才能改變,引用型別的可以在任何地方改變。在vue資料傳遞中,Object和Array為引用型別,String,Number,Boolean為基本型別,想理解的更清楚,建議去看下我的這篇部落格

js基本型別和引用型別

new Vue({
  el: '#prop-example-2',
  data: {
     string: '基本型別資料--只能在父元件中修改',
     obj: {tips: '父子元件都可以修改,且不需要顯示提交,各個元件都會響應修改'},
     name: '加sync修飾符,可以從子元件顯示提交修改'
  },
  methods: {
     // 子元件提交事件告訴要進行更改
    changString (newString) {
        this.string = newString
    }
  }
})

子元件

Vue.component('example'
, { // 接收資料 props: { string: String, arr: Array, name: String }, methods: { changeString () { // 會提交一個changString事件,這時需要在父元件上監聽此事件 this.emit('changString', 'string的最終值') }, changeName () { // 顯示的提交name,不需要再去父元件上監聽然後再去改變name的值,vue會幫我們做了這個過程 this
.$emit('update:name', newName) }, // 引用型別 changeArr () { obj.tips = '不需要任何處理就直接改了' } } })

上面是對已存在的值進行修改,如果在物件中要新增/刪除新的鍵值對,就應該進行全域性註冊

vm.$set( target, key, value )
vm.$delete( target, key )

對於陣列,在對其操作時,最好了解一下vue提供的變異方法(對陣列的一些方法進行了包裝,也就是對data裡的那些陣列的prototype上的一些方法重寫,注意,沒改變Array物件的方法),以便view對做出反應,變異方法有如下幾種

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

props驗證規則請移步官網props驗證

相關推薦

vue父子元件通訊傳值

父元件 -> 子元件 通過props來進行通訊 父元件程式碼: &lt;Children :dataName = "dataContent" /&gt; //dataName: 傳過去資料的名字 //dataContent: 傳過去的資料 子元件程式碼: &lt;

Vue父子元件通訊,props和自定義監聽

1.子元件通過props接收父元件中的值,插入子元件中會跟隨父元件而變化。(:x="num")--->頁面中插入{{x}} 2.如果只想變接收過來的值,而不改變父元件的,則吧接收過來的值存一下。(newx:this.x)--->頁面中插入{{newx}} 3.

vue父子元件通訊

父子元件通訊 父元件 <div id="prop-example-2"> <child :string="string" :obj="obj" :name.sync="name" @changString="changString"

Vuevue父子元件通訊

1. 父元件向子元件傳遞 父元件程式碼 <template> <div id="app"> <h1>This is Parent component&

vue 父子元件通訊,利用物件進行通訊

大家都知道vue父子元件間通訊用到了props,$emit。 通過props可以實現父向子通訊,通過$emit可以實現子向父通訊,現在我要介紹另外一種方式,通過props傳物件的形式通訊。 首先寫一個簡單的例子 //父元件 <parent>

vue父子元件通訊高階用法

vue專案的一大亮點就是元件化。使用元件可以極大地提高專案中程式碼的複用率,減少程式碼量。但是使用元件最大的難點就是父子元件之間的

Vue 父子元件通訊

作者:小土豆biubiubiu 部落格園:www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e894d 簡書:https://www.jianshu.com/u/cb1c3884e6d5 微信公眾號:土豆媽的碎碎念(掃

vue.js學習筆記(三)--父子元件通訊總結

部落格地址:https://fisher-zh.github.io 在使用Vue的過程中,如果需要進行父子元件間的通訊,通過查閱官方文件 我們可以瞭解到只需要在子元件要顯式地用 props選項宣告它期待獲得的資料,同時在其使用過程中傳入相應的資料即可,例如: Vu

vue父子元件之間通訊例項

一、父元件向子元件傳遞資料 ①獲取資料並在父元件上繫結資料 ②在子元件使用props接收父元件傳遞過來資料 ③將接收的資料繫結到子元件模板   二、子元件向父元件傳遞資料 ①在子元件上定義一個事件 如 @click='handleItemClick'

vue父子元件通訊

一. 父-子元件間通訊 let children={    template:`<div><h1>{{send}}</h1></div>`,  # 將傳過來的資訊send渲染出來  

初識vue 2.0(10):使用$parent、$children父子元件通訊

使用 this.$parent查詢當前元件的父元件。使用 this.$children查詢當前元件的直接子元件,可以遍歷全部子元件, 需要注意 $children 並不保證順序,也不是響應式的。使用 this.$root查詢根元件,並可以配合$children遍歷全部元件。使用 this.$refs查詢命名子

Vue中的父子元件通訊以及使用sync同步父子元件資料

 目錄 正文 前言: 之前寫過一篇文章《在不同場景下Vue元件間的資料交流》,但現在來看,其中關於“父子元件通訊”的介紹仍有諸多缺漏或者不當之處, 正好這幾天學習了關於用sync修飾符做父子元件資料雙向繫結的的用法, 於是決定寫一篇文章, 再次總結下“Vue中的父

vue父子元件之間的通訊

一、父元件傳值給子元件 1.子元件,首先定義一個子元件,然後在子元件中註冊props,然後建立一個名為infos的屬性,用來接收從父元件傳過來的資料 <template> <div> <div>{{infos}}</d

Vue---父子元件之間的通訊

  在vue元件通訊中其中最常見通訊方式就是父子元件之中的通訊,而父子元件的設定方式在不同情況下又各有不同。最常見的就是父元件為控制組件子元件為檢視元件。父元件傳遞資料給子元件使用,遇到業務邏輯操作時子元件觸發父元件的自定義事件。無論哪種組織方式父子元件的通訊方式都是大同小異。 一、父元件到子元件通訊  

Vue 父子元件間的通訊

前言 在 Vue 專案中父子元件的通訊是非常常見的,最近做專案的時候發現對這方面的知識還不怎麼熟練,在這邊做一下筆記,系統學習一下吧。 1 父元件傳值給子元件 1.1 傳值寫法 父元件傳值給子元件,這個就比較常見了,直接用 props 就可以了。但是就算是 props 子元件那邊

Vue.js 父子元件通訊的十種方式

概述 幾種通訊方式無外乎以下幾種: Prop(常用) $emit (元件封裝用的較多) .sync語法糖 (較少) $attrs 和 $listeners (元件封裝用的較多) provide 和 inject (高階元件/元件庫用的較多) 其他方式通訊 詳述

詳細講解vue.js裡的父子元件通訊(props和$emit)

    在進入這個話題之前,首先我們先來想一下在vue裡,如何寫一個父子元件。為了簡單起見,下面的程式碼我都沒用腳手架來構建專案,直接在html檔案裡引入vue.js來作為例子。父子元件的寫法如下:<div id="app"> <parent>

vue父子元件通訊

父元件向子元件通訊 原理: 父元件data中存在一屬性,子元件通過props接收,父元件動態繫結該資料。 子元件程式碼: <template> <div class="child"> <button>減一</button>

[js高手之路]Vue2.0基於vue-cli+webpack父子元件通訊教程

在git命令列下,執行以下命令完成環境的搭建: 1,npm install --global vue-cli  安裝vue命令列工具 2,vue init webpack vue-demo   使用vue命令生成一個webpack專案,專案名稱為vue-demo 3,c

vue中的event bus非父子元件通訊

有時候非父子關係的元件也需要通訊。在簡單的場景下,使用一個空的Vue例項作為中央事件匯流排: 有時候非父子關係的元件也需要通訊。在簡單的場景下,使用一個空的 Vue 例項作為中央事件匯流排: var bus = new Vue() // 觸發元件 A 中的事件bu