首頁 >web前端 >js教程 >如何操作vue在自訂元件內啟用用v-model

如何操作vue在自訂元件內啟用用v-model

php中世界最好的语言
php中世界最好的语言原創
2018-05-29 17:55:171735瀏覽

這次帶給大家如何操作vue在自定義元件內啟用用v-model,操作vue在自訂元件內啟用v-model的注意事項有哪些,下面就是實戰案例,一起來看一下。

v-model指令

所謂的「指令」其實就是擴充了HTML標籤功能(屬性)。

先來一個元件,不用vue-model,正常父子通訊

<!-- parent -->
<template>
<p class="parent">
  <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
  <Child @returnBack="turnBack" :give="sthGiveChild"></Child>
</p>
</template>
<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      sthGiveChild: '给你100块'
    };
  },
  components: {
    Child
  },
  methods: {
    turnBack(val) {
      this.sthGiveChild = val;
    }
  }
}
</script>
<!-- child -->
<template>
<p class="child">
  <p>我是儿子,父亲对我说: {{give}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</p>
</template>
<script>
export default {
  props: {
    give: String
  },
  methods: {
    returnBackFn() {
      this.$emit('returnBack', '还你200块');
    }
  }
}
</script>

#點擊回應後,父親對兒子說的話變成了兒子的回應。兒子收到的訊息也變了,實現通訊。

改用v-model

<!-- parent -->
<template>
<p class="parent">
  <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
  <Child v-model="sthGiveChild"></Child>
</p>
</template>
<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      sthGiveChild: '给你100块'
    };
  },
  components: {
    Child
  }
}
</script>
<!-- child -->
<template>
<p class="child">
  <p>我是儿子,父亲对我说: {{give}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</p>
</template>
<script>
export default {
  props: {
    give: String
  },
  model: {
    prop: 'give',
    event: 'returnBack'
  },
  methods: {
    returnBackFn() {
      this.$emit('returnBack', '还你200块');
    }
  }
}
</script>

文案雖有不同,但是效果最終是一致的。

看看官方自訂元件的v-model

官方範例https://vuefe.cn/v2/api/#model

有這麼一句話: 預設情況下,一個元件上的v-model 會把value 用作prop 且把input 用作event。

試著把上邊子元件的例子改一下,也是跑的通的

<!-- child -->
<template>
<p class="child">
  <p>我是儿子,父亲对我说: {{value}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</p>
</template>
<script>
export default {
  props: {
    value: String
  },
  methods: {
    returnBackFn() {
      this.$emit('input', '还你200块');
    }
  }
}
</script>

做一下總結:

如果你懶,不想自己去處理事件,那就用預設的'value' && 'input' 事件去處理,如果用原生事件的,甚至連model屬性也可以省去。

如果你想自己的程式碼比較明確,區分出自定義事件,那麼下面的組合就是你的菜。

prop和event看你自己心情定義,當然要知名見意【盡量避開關鍵字】

model: {
prop: 'someProp', // 注意,是prop,不带s。我在写这个速记的时候,多写了一个s,调试到怀疑人生
event: 'someEvent'
}
this.$emit('someProp', [returnValueToParent])

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

怎麼使用WebPack設定vue多頁面

怎麼利用webpack建置react開發環境

以上是如何操作vue在自訂元件內啟用用v-model的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn