初學(xué)Vue

Vue

{{ }}:插值;插值里面只能寫表達式,不能寫語句

指令:

v-text=“js值”:渲染text內(nèi)容

v-html=“js值”:渲染html內(nèi)容

v-for=“item in js值 / item of js值 / ( item, index ) in js值”:循環(huán)創(chuàng)建dom

v-if="js條件":滿足條件就創(chuàng)建dom;v-else跟在v-if

v-show="js條件":滿足條件就顯示,不滿足就添加css樣式display: none;跟v-if不同的是,標簽一直會存在。

v-on:click="函數(shù)名/表達式":綁定事件調(diào)用函數(shù)/執(zhí)行表達式;可簡寫為@click;函數(shù)名可以加括號,可不加括號,不加括號,事件默認獲取的是event,加括號可以傳遞任意參數(shù),如果要獲取event就傳$event

@keyup.ctrl.enter:按ctrl+enter觸發(fā)事件;

v-bind:title="js值":使用Vue定義的變量設(shè)為title的值;可簡寫為:title

v-cloak:配合css代碼;當Vue代碼還沒加載完成時,此時標簽樣式就會應(yīng)用css里[v-cloak]{ }的樣式,Vue代碼加載完后就會取消掉css里的樣式

v-model

多個復(fù)選框,綁定到同一個數(shù)組:

<div id='example-3'>
  <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
  <label for="jack">Jack</label>
  <input type="checkbox" id="john" value="John" v-model="checkedNames">
  <label for="john">John</label>
  <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
  <label for="mike">Mike</label>
  <br>
  <span>Checked names: {{ checkedNames }}</span>
</div>
new Vue({
  el: '#example-3',
  data: {
    checkedNames: []
  }
})

原理:

<div id='example-3'>
  <input type="checkbox" id="jack" value="Jack" @change="checkedEvent">
  <label for="jack">Jack</label>
  <input type="checkbox" id="john" value="John" @change="checkedEvent">
  <label for="john">John</label>
  <input type="checkbox" id="mike" value="Mike" @change="checkedEvent">
  <label for="mike">Mike</label>
  <br>
  <span>Checked names: {{ checkedNames }}</span>
</div>
new Vue({
  el: '#example-3',
  data: {
    checkedNames: []
  }
  methods: {
    checkedEvent (e) {
    //記錄value值   
    const v = e.target.value
         //查看數(shù)組中是否有此value值
          if(this.checkedNames.includes(v)){
            this.checkedNames = this.checkedNames.filter(item => {
                //filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是true還是false決定保留還是丟棄該元素。
              return item !== v
            })
          }
          else{
            this.checkedNames.push(v);
          }
        }
    }
})

Vue中style樣式

<div :class="{a: true, b: false}"></div>//應(yīng)用a的樣式
<div :class="{a: true, b: true}"></div>//應(yīng)用b的樣式

注意:

Vue里面的方法必須寫在methods里面

Vue里面的this指Vue的實例

computed:計算屬性

? 它是有依賴緩存的,只有它所依賴的數(shù)據(jù)發(fā)生了改變,才會重新計算。這個計算出來的值,是可以直接當成data來用的,也就是說在用的時候,不需要添加()。這個必須要有一個return值

? 計算屬性是基于它們的響應(yīng)式依賴進行緩存的。只在相關(guān)響應(yīng)式依賴發(fā)生改變時它們才會重新求值。

methods:方法

? 每次有數(shù)據(jù)更改,只要在模板里有使用這個方法,這個方法就會執(zhí)行。它是 沒有緩存的。

? 每當觸發(fā)重新渲染時,調(diào)用方法將總會再次執(zhí)行函數(shù)。

watch:偵聽屬性

? 觀測已有數(shù)據(jù)的。

? 當你有一些數(shù)據(jù)需要隨著其它數(shù)據(jù)變動而變動,不能亂用

filters:過濾器

? 可被用于一些常見的文本格式化。

<!-- 在雙花括號中 -->
{{ message | capitalize }}
<!-- 可以串聯(lián) 
{{ message | filterA | filterB }}
-->
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
filters: {
  capitalize: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
}

ajax

const app = new Vue({
      el: '#app',
      data: {
        todos: []
      },
      // 一般的ajax請求都會放在這里面來做,這個是固定的,后面會講到的生命周期中的一個方法
      created() {
        fetch('https://jsonplaceholder.typicode.com/todos')
          .then(response => response.json())
          .then(json => this.todos = json)
      }
    })

axios

基于promise用于瀏覽器和node.js的http客戶端+

axios.get('https://jsonplaceholder.typicode.com/todos')
          .then(resp => {
            // 這里是和后端約定好的一個狀態(tài),可以是任何的key, 只要約定好就行。
            if (resp.status === 200) {
              // 這里才是成功的邏輯
              this.todos = resp.data
            } else {
              // 處理錯誤的邏輯
            }
          })
          .catch(err => {
            // 處理錯誤的邏輯
          })

自定義配置創(chuàng)建實例

axios.create([config])



const ajax = axios.create({
      baseURL: 'https://jsonplaceholder.typicode.com'
    })
   ajax.get('/todos')
          .then(resp => {
            // 這里是和后端約定好的一個狀態(tài),可以是任何的key, 只要約定好就行。
            if (resp.status === 200) {
              // 這里才是成功的邏輯
              setTimeout(() => {
                this.todos = resp.data
                this.isLoading = false
              }, 3000)
            } else {
              // 處理錯誤的邏輯
            }
          })
          .catch(err => {
            // 處理錯誤的邏輯
          })

當做項目時,需要把外部引用的東西擴展到Vue上就用此方法

// 在Vue這個對象的原型上擴展一個$http 讓它指向于axios, 那么在實例上就可以直接使用this.$http來使用axios了
    Vue.prototype.$http = axios
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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