vue中v model與 sync修飾符的使用差異

2021-10-02 06:22:20 字數 1939 閱讀 5477

使用方式

子元件:

示例**:

// 父元件

"message"

>

<

/children>

<

/template>

import children from

"./children.vue"

;export

default

,data()

;}, watch:}}

;<

/script>

// 子元件

}<

/h1>

<

/template>

export

default

, props:

,mounted()

,1500);

}};<

/script>

本質

v-model本質上就是乙個語法糖。相當於為父元件繫結了乙個props與更新事件,當子元件資料更新時,實質上是呼叫了input事件來改變父元件的值:

"message" @input=

"(event) => "

/>

<

/template>

使用方法

子元件:

示例**:

// 父元件

"message"

/>

<

/template>

import children from

"./children.vue"

;export

default

,data()

;}, watch:}}

;<

/script>

// 子元件

}<

/h1>

<

/template>

export

default

,mounted()

,1500);

}};<

/script>

本質

.sync是為了實現對props的雙向繫結。比如,現在有乙個包含title prop的元件,可以用以下方法表達對其賦新值的意圖:

this.$emit('update:title', newtitle);

然後父元件可以監聽那個事件並根據需要更新乙個本地的資料屬性:

"title" @update:title=

"title = $event"

/>

<

/template>

兩者差異

兩者的本質都是語法糖,目的都是實現元件與外部資料的雙向繫結。v-model 是 .sync的一種體現(prop是valuevm.$emit('update:input'))。.sync 比較靈活,v-model比較單一。

v-model能在像單選框、核取方塊等型別的輸入控制項中實現雙向繫結,但是如果它使用在乙個元件上,就無法實現雙向繫結,因為從它的本質上看,它就是繫結value值,監聽input事件,通過event拿到新的value並賦值給value

總的來說,v-model傾向於「value」,是元件最終的操作結果。.sync傾向於「change」,它是父元件獲取子元件狀態的一種快捷方式,否則我們很可能需要用事件來判斷子元件狀態。是一種update操作。

sync和v model的區別

v model雙向繫結實現 單向資料流 父元件將值傳遞給子元件,子元件修改值時,將當前值e.target.value傳遞給父元件,父元件將該值傳遞給子元件,子元件的值修改 子元件 kinput.vue 父元件 parent.vue v model等同於 value input事件的結合 sync修飾...

Vue中v bind與v model的區別

簡單來說,區別如下 1.v bind用來繫結資料和屬性以及表示式,縮寫為 2.v model使用在表單中,實現雙向資料繫結的,在表單元素外使用不起作用 v model多在表單中使用,在表單元素上建立雙向繫結,根據控制項型別選擇正確的方法更新元素,可以繫結text radio checkbox sel...

vue中v model是個啥?

v model實際上只是一種語法糖,有時需要我們自定義去雙向繫結資料,這時候就需要對v model的實質有一定的了解了 當我們這樣寫時 something 複製 其實寫的是這樣乙個內容 something input something arguments 0 複製 所以當你想對乙個子元件的內容和父...