Vue .sync修飾符與$emit(update:xxx)
Vue .sync修飾符與$emit(update:xxx)
.sync修飾符的作用
在對一個 prop 進行“雙向繫結,單向修改”的場景下,因為子元件不能直接修改父元件,sync在2.3版本引入,作為一個事件繫結語法糖,利用EventBus,當子元件觸發事件時,父元件會響應事件並實現資料更新,避免了子元件直接修改父元件傳過來的內容。
.sync修飾符之前的寫法
父元件:
<parent :myMessage=“bar” @update:myMessage=“func”>
js定義函式:
func(val){
this.bar = val;
}
子元件,事件觸發函式:
func2(){
this.$emit(‘update:myMessage’,valc);
}
也就是說,父元件需要傳一個繫結值(myMessage)同時需要設定一個更新觸發函式(func)給子元件修改繫結值的時候呼叫。
使用.sync修飾符的寫法
會簡化上面的寫法,父元件不需要定義更新觸發函式。
父元件:
<comp :myMessage.sync="bar"></comp>
子元件:
this.$emit('update:myMessage',valc);
sync 修飾符與 $emit(update:xxx) ,駝峰法 和 - 寫法的區別,使用.sync修飾符,即變數應該使用駝峰法:
// this.$emit('update:father-num',100); //無效
this.$emit('update:fatherNum',100); //有效
//......
<father v-bind:father-num.sync="test"></father>
不適用 .sync 修飾符,變數應該使用 - ,即father-num
this.$emit('update:father-num',100); //有效
//this.$emit('update:fatherNum',100); // 無效
//......
<father v-bind:father-num="test" v-on:update:father-num="test=$event" ></father>
但從實踐中發現,用 .sync 修飾符,這兩種寫法都是有效的。
在vue之中,當父元件向子元件傳遞屬性的時候,如下使用駝峰法
<cpn :cMives="movies"></cpn>
在子元件中props:[‘cMives’],是接收不到屬性的,應該使用-來繫結屬性,接收依舊使用駝峰法。
<cpn :c-mives="movies"></cpn>
綜上,繫結時候用 “-”,接收和使用的時候用駝峰法,如果真的無效,再試試上面所說的那種情況。
相關文章
- vue sync 修飾符Vue
- Vue的.sync修飾符的使用Vue
- vue中v-model和.sync修飾符區別Vue
- Vue - 按鍵修飾符 && 系統修飾符Vue
- vue 事件修飾符Vue事件
- vue3 模板編譯 —— 30 行程式碼實現 .sync 修飾符Vue編譯行程
- Vue事件修飾符詳解Vue事件
- Java 修飾符Java 修飾符
- java修飾符Java
- 關於Java中各種修飾符與訪問修飾符的說明 (轉)Java
- solidity 引用型別修飾符memory、calldata與storage 常量修飾符Constant與Immutable區別Solid型別LDA
- 繼承&修飾符繼承
- iOS __block修飾符iOSBloC
- Java 常用修飾符Java
- 訪問修飾符
- 我的 Vue.js 學習日記 (七) – 事件與修飾符Vue.js事件
- vue學習筆記7-事件修飾符Vue筆記事件
- vue中$emit與$onVueMIT
- vue 基礎入門筆記 02:事件修飾符Vue筆記事件
- java中的修飾符Java
- Java的static修飾符Java
- 許可權修飾符
- TypeScript 類訪問修飾符TypeScript
- Java的訪問修飾符Java
- java修飾符使用指南Java
- vue箭頭函式、js-for迴圈、事件修飾符、摁鍵事件和修飾符、表單控制、完整購物車版本Vue函式JS事件
- Java的“友好的”訪問指示符(修飾符)Java
- v-on 及其事件修飾符事件
- 從實踐認識修飾符
- Kotlin可見性修飾符Kotlin
- java oop 修飾符&關鍵字JavaOOP
- 正規表示式模式修飾符模式
- MongoDB ( 四 )高階_find修飾符MongoDB
- Java 修飾符順序問題Java 修飾符
- Java修飾符關鍵詞大全Java
- Java中的native修飾符Java
- c#之tcbs extern修飾符C#
- java static修飾符的問題Java