真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎樣在Vue中自定義屬性

今天就跟大家聊聊有關(guān)怎樣在Vue中自定義屬性,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、泉港網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、泉港網(wǎng)絡(luò)營銷、泉港企業(yè)策劃、泉港品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供泉港建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

1 事件名

跟組件和 prop 不同,事件名不存在任何自動化的大小寫轉(zhuǎn)換。而是觸發(fā)的事件名需要完全匹配監(jiān)聽這個事件所用的名稱。舉個例子,如果觸發(fā)一個 camelCase 名字的事件:

this.$emit('myEvent')

則監(jiān)聽這個名字的 kebab-case 版本是不會有任何效果的:

跟組件和 prop 不同,事件名不會被用作一個 JavaScript 變量名或?qū)傩悦跃蜎]有理由使用 camelCase 或 PascalCase 了。并且 v-on 事件監(jiān)聽器在 DOM 模板中會被自動轉(zhuǎn)換為全小寫 (因為 HTML 是大小寫不敏感的),所以 v-on:myEvent 將會變成 v-on:myevent——導(dǎo)致 myEvent 不可能被監(jiān)聽到。

因此,我們推薦你始終使用 kebab-case 的事件名。

2 自定義組件的 v-model

2.2.0+ 新增

一個組件上的 v-model 默認會利用名為 value 的 prop 和名為 input 的事件,但是像單選框、復(fù)選框等類型的輸入控件可能會將 value 特性用于不同的目的。model 選項可以用來避免這樣的沖突:

Vue.component('base-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: Boolean
  },
  template:
      `
      
      `
});

現(xiàn)在在這個組件上使用 v-model 的時候:

這里的 loving 的值將會傳入這個名為 checkedprop。同時當(dāng) 觸發(fā)一個 change 事件并附帶一個新的值的時候,這個 loving 的屬性將會被更新。

注意你仍然需要在組件的 props 選項里聲明 checked 這個 prop。

3 將原生事件綁定到組件

你可能有很多次想要在一個組件的根元素上直接監(jiān)聽一個原生事件。這時,你可以使用 v-on.native 修飾符:

在有的時候這是很有用的,不過在你嘗試監(jiān)聽一個類似 的非常特定的元素時,這并不是個好主意。比如上述組件可能做了如下重構(gòu),所以根元素實際上是一個

這時,父級的 .native 監(jiān)聽器將靜默失敗。它不會產(chǎn)生任何報錯,但是 onFocus 處理函數(shù)不會如你預(yù)期地被調(diào)用。

為了解決這個問題,Vue 提供了一個 $listeners 屬性,它是一個對象,里面包含了作用在這個組件上的所有監(jiān)聽器。例如:

{
 focus: function (event) { /* ... */ }
 input: function (value) { /* ... */ },
}

有了這個 $listeners 屬性,你就可以配合 v-on="$listeners" 將所有的事件監(jiān)聽器指向這個組件的某個特定的子元素。對于類似 的你希望它也可以配合 v-model 工作的組件來說,為這些監(jiān)聽器創(chuàng)建一個類似下述inputListeners 的計算屬性通常是非常有用的:

Vue.component('base-input', {
  inheritAttrs: false,
  props: ['label', 'value'],
  computed: {
    inputListeners: function () {
      var vm = this;
      //Object.assign() 會將所有的對象合并為一個新對象
      return Object.assign({},
          //從父級添加所有的監(jiān)聽器
          this.$listeners,
          //添加自定義監(jiān)聽器或復(fù)寫監(jiān)聽器行為
          {
            input: function (event) {
              vm.$emit('input', event.target.value);
            }
          }
      )
    }
  },
  template: `
    
  `
});

現(xiàn)在 組件是一個完全透明的包裹器了,也就是說它可以完全像一個普通的 元素一樣使用了:所有跟它相同的特性和監(jiān)聽器的都可以工作。

4 .sync 修飾符

2.3.0+ 新增

在有些情況下,我們可能需要對一個 prop 進行“雙向綁定”。不幸的是,真正的雙向綁定會帶來維護上的問題,因為子組件可以修改父組件,且在父組件和子組件都沒有明顯的改動來源。

這也是為什么我們推薦以 update:my-prop-name 的模式觸發(fā)事件取而代之。舉個例子,在一個包含 title prop 的假設(shè)的組件中,我們可以用以下方法表達對其賦新值的意圖:

this.$emit('update:title', newTitle)

然后父組件可以監(jiān)聽那個事件并根據(jù)需要更新一個本地的數(shù)據(jù)屬性。例如:

為了方便起見,我們?yōu)檫@種模式提供一個縮寫,即 .sync 修飾符:

當(dāng)我們用一個對象同時設(shè)置多個 prop 的時候,也可以將這個 .sync 修飾符和 v-bind 配合使用:

這樣會把 doc 對象中的每一個屬性 (如 title) 都作為一個獨立的 prop 傳進去,然后各自添加用于更新的 v-on 監(jiān)聽器。

v-bind.sync 用在一個字面量的對象上,例如v-bind.sync=”{ title: doc.title }”,是無法正常工作的,因為在解析一個像這樣的復(fù)雜表達式的時候,有很多邊緣情況需要考慮。

為什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創(chuàng)建可維護性和可測試性更強的代碼庫,Vue允許可以將一個網(wǎng)頁分割成可復(fù)用的組件,每個組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網(wǎng)頁中相應(yīng)的地方,所以越來越多的前端開發(fā)者使用vue。

看完上述內(nèi)容,你們對怎樣在Vue中自定義屬性有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


新聞標(biāo)題:怎樣在Vue中自定義屬性
網(wǎng)址分享:http://weahome.cn/article/pijjse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部