Vue.js(v-text,v-html等一些基礎(chǔ)操作)

v-text

根據(jù)官網(wǎng)的解釋,v-text更新了元素的textContent,v-text 約等于 插值

<template>
  <div id="app" v-text="message">
        
  </div>
</template>

<script>
import Slots from './components/Slot'
export default {
  name: 'App',
  data(){
    return {
       message:'Hello Vue'
    }
  },
  
}
</script>
  <div id="app" v-text="message">
        捏捏捏
  </div>

如果在中間添加內(nèi)容,發(fā)現(xiàn)瀏覽器無顯示。說明v-text權(quán)重高于插值。

v-html

更新元素的 innerHTML 。注意:內(nèi)容按普通 HTML 插入 - 不會作為 Vue 模板進(jìn)行編譯 。

<template>
  <div id="app" v-html="message">
        捏捏捏
  </div>
</template>

<script>
import Slots from './components/Slot'
export default {
  name: 'App',
  data(){
    return {
       message:'<span>我是html</span>'
    }
  },
  
}
</script>

同樣不會顯示文字,與v-text不同的是,v-html可以解析標(biāo)簽;如果此處使用v-text 會顯示span

v-bind(:)

用法:
動態(tài)地綁定一個或多個特性,或一個組件 prop 到表達(dá)式。
在綁定 class 或 style 特性時,支持其它類型的值,如數(shù)組或?qū)ο蟆?br> 在綁定 prop 時,prop 必須在子組件中聲明。可以用修飾符指定不同的綁定類型。

沒有參數(shù)時,可以綁定到一個包含鍵值對的對象。注意此時 class 和 style 綁定不支持?jǐn)?shù)組和對象。
(v-bind的用處比較廣泛,詳情建議看一下官網(wǎng)的文檔或者直接百度相關(guān)內(nèi)容)

<template>
  <div id="app" v-bind:class="{red:isRed}">
     
  </div>
</template>
<script>
export default {
  name: 'App',
  data(){
    return {
      isRed:true
    }
  },
}
</script>

<style scoped>
  
</style>

同理可綁定其他屬性

官網(wǎng)例子就不敲了

v-show和v-if

v-show的原理 ----》jq里的 hide() display:none
v-if的原理---》jq里的 remove() DOM是否加載

<template>
  <div id="app">
    <input type="text" @keyup.enter="val" v-model="inputValue"/>
     <p v-for="(item,index) in arr" :key="index">{{item.message}}</p>
  </div>
</template>
<script>
export default {
  name: 'App',
  data(){
    return {
      inputValue:'',
      arr:[] //存儲輸入內(nèi)容
    }
  },
  methods:{
    val(ev){
      this.arr.push({message:this.inputValue})
      this.inputValue=''
    }
  }

}
</script>

<style scoped>
  
</style>

代碼很簡單,循環(huán)空數(shù)組,通過input中的value Enter動態(tài)加入內(nèi)容

<div id="app">
      <input type="text" @keyup.enter="val" v-model="inputValue"/>
        <p v-show="!arr.length">可見的v-show</p>

      <p v-for="(item,index) in arr" :key="index">{{item.message}}</p>
    </div>

在中間加段內(nèi)容,那么v-show與v-if一樣都是通過布爾值判定,初始化arr為空所以此時為true

當(dāng)輸出內(nèi)容回車之后,此時arr.length存在,則v-show此時是false

消失的同時可以看到下方DOM是有display:none的樣式的,同理換成v-if,則是沒有DOM
v-for與v-on前面講了許多就不重復(fù)了

data

關(guān)于data,很多人的第一印象就是,這個東西很簡單,不就是把數(shù)據(jù)寫到data里,就可以用雙括號綁定數(shù)據(jù)了嗎?

官方文檔:

Vue 實(shí)例的數(shù)據(jù)對象。Vue 將會遞歸將 data 的屬性轉(zhuǎn)換為 getter/setter,從而讓 data 的屬性能夠響應(yīng)數(shù)據(jù)變化。對象必須是純粹的對象 (含有零個或多個的 key/value 對):瀏覽器 API 創(chuàng)建的原生對象,原型上的屬性會被忽略。大概來說,data 應(yīng)該只能是數(shù)據(jù) - 不推薦觀察擁有狀態(tài)行為的對象。

一旦觀察過,不需要再次在數(shù)據(jù)對象上添加響應(yīng)式屬性。因此推薦在創(chuàng)建實(shí)例之前,就聲明所有的根級響應(yīng)式屬性。

實(shí)例創(chuàng)建之后,可以通過 vm.$data 訪問原始數(shù)據(jù)對象。Vue 實(shí)例也代理了 data 對象上所有的屬性,因此訪問 vm.a 等價于訪問 vm.$data.a。

_$開頭的屬性 不會 被 Vue 實(shí)例代理,因?yàn)樗鼈兛赡芎?Vue 內(nèi)置的屬性、API 方法沖突。你可以使用例如 vm.$data._property 的方式訪問這些屬性。

當(dāng)一個組件被定義,data 必須聲明為返回一個初始數(shù)據(jù)對象的函數(shù),因?yàn)榻M件可能被用來創(chuàng)建多個實(shí)例。如果 data 仍然是一個純粹的對象,則所有的實(shí)例將共享引用同一個數(shù)據(jù)對象!通過提供 data 函數(shù),每次創(chuàng)建一個新實(shí)例后,我們能夠調(diào)用 data 函數(shù),從而返回初始數(shù)據(jù)的一個全新副本數(shù)據(jù)對象。

如果需要,可以通過將 vm.$data 傳入 JSON.parse(JSON.stringify(...)) 得到深拷貝的原始數(shù)據(jù)對象。

export default {
  name: 'App',
  data(){
    return {
     name:'vue'
    }
  },
  mounted(){  //不懂這個無所謂
    console.log(this.$data)
  }

}

Vue 將會遞歸將 data 的屬性轉(zhuǎn)換為 getter/setter,從而讓 data 的屬性能夠響應(yīng)數(shù)據(jù)變化,所以數(shù)據(jù)是通過get和set方法進(jìn)行數(shù)據(jù)綁定的。

把name改成$name or _name,控制臺可以輸出值,但無法渲染到dom上,還會報(bào)錯

  mounted(){
    console.log(this.$data.$name)
  }

methods

methods 將被混入到 Vue 實(shí)例中??梢灾苯油ㄟ^ VM 實(shí)例訪問這些方法,或者在指令表達(dá)式中使用。方法中的 this 自動綁定為 Vue 實(shí)例。(不多說,可以自己打印一下this自己看看)

computed 與 watch 后面文章已介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容