欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue.js數(shù)據(jù)綁定操作詳解

 更新時間:2018年04月23日 15:12:08   作者:鍋子ToT  
這篇文章主要介紹了vue.js數(shù)據(jù)綁定操作,結(jié)合實例形式詳細分析了vue.js數(shù)據(jù)綁定的各種常見操作技巧與相關(guān)注意事項,需要的朋友可以參考下

本文實例講述了vue.js數(shù)據(jù)綁定操作。分享給大家供大家參考,具體如下:

數(shù)據(jù)綁定

響應(yīng)式的數(shù)據(jù)綁定系統(tǒng)。建立綁定之后,DOM將和數(shù)據(jù)保持同步,無須手動維護DOM。使代碼能夠更加簡潔易懂、提升效率。

數(shù)據(jù)綁定語法

1.文本插值

{{ }}Mustache標簽

<span>Hello {{ name }}</span>

data:{
    name: 'vue'
}
== > Hello vue

單次插值

首次賦值后再更改vm實例屬性值不會引起DOM的變化

<span v-once="name">{{ name }}</span>

2.HTML屬性

Mustache標簽{{ }}

<div v-bind:id="'id-'+id"></div>

簡寫:

<div :id="'id-'+id"></div>

3.綁定表達式

放在Mustache標簽內(nèi)的文本內(nèi)容。除了直接輸出屬性值之外,一段綁定表達式可以由一個簡單的JavaScript表達式和可選的一個或多個過濾器構(gòu)成(不支持正則表達式,若需要復(fù)雜的轉(zhuǎn)換,則使用過濾器或者計算屬性來進行處理)。

{{ index + 1}}
{{ index == 0 ? 'a' : 'b' }}
{{name.split('').join('|') }}
{{ var a = 1 }} //無效

4.過濾器

vue.js允許在表達式后添加可選的過濾器,以管道符"|"指示。

{{ name | uppercase }} // Vue.js將name的值傳入給uppercase這個內(nèi)置的過濾器中(本質(zhì)是一個函數(shù)),返回字符串的大寫值。
{{ name | filterA | filterB }}  //多個過濾器鏈式使用
{{ name | filterA arg1 arg2 }} //傳入多個參數(shù)

此時,filterA將name的值做為第一個參數(shù),arg1,arg2做為第二、第三個參數(shù)傳入過濾器函數(shù)中。

最終函數(shù)的返回值即為輸出結(jié)果。arg1,arg2可以使用表達式,也可以加上單引號,直接傳入字符串。

例如:

{{ name.split('') | limitBy 3 1 }} // ->u,e

過濾器limitBy可以接受兩個參數(shù),第一個參數(shù)是設(shè)置顯示個數(shù),第二個參數(shù)為可選,指從開始元素的數(shù)組下標。

vue.js內(nèi)置的10個過濾器(Vue.js2.0中去除)

capitalize:字符串首字符轉(zhuǎn)化為大寫。
uppercase:字符串轉(zhuǎn)化為大寫。
lowercase:字符串轉(zhuǎn)化為小寫。
currency:參數(shù)為{String}[貨幣符號],{Number}[小數(shù)位],將數(shù)字轉(zhuǎn)化成貨幣符號,并且會自動添加數(shù)字分節(jié)號。

{{ amount | currency '¥' 2 }} //若amount值為1000,則輸出為¥1,000.00

pluralize:參數(shù)為{String}single,[double,triple],字符串復(fù)數(shù)化。

<p v-for="c in count">{{ c | pluralize 'item' }} {{ c | pliralize 'st' 'nd' 'rd' 'th' }} </p>

//輸出結(jié)果:
1item 1st
2items 2nd
3items 3rd
4items 4th

json:參數(shù)為{Number}[indent]空格縮進數(shù),將json對象數(shù)據(jù)輸出成符合json格式的字符串。

debounce:傳入值必須是函數(shù),參數(shù)可選,為{Number}[wait],即延時時長。作用是當調(diào)用函數(shù)n毫秒后,才會執(zhí)行該動作。

<input v-on:keyup="onKeyup | debounce 500"> //input元素上監(jiān)聽了keyup事件,并且延遲500ms觸發(fā)

limitBy:傳入值必須是數(shù)組,參數(shù)為{Number}limit,{Number}[offset],limit為顯示個數(shù),offset為開始顯示數(shù)組下標。

<div v-for="item in items | limitBy 10"></div> //items為數(shù)組,且只顯示數(shù)組中的前十個元素

filterBy:傳入值必須是數(shù)組,參數(shù)為{String | Function}targetStringOrFunction,即需要匹配的字符串或函數(shù);"in"可選分隔符。{String}[...searchKeys],為檢索的屬性區(qū)域。

<p v-for="name in names | filterBy '1.0'">{{ name }}</p> //檢索names數(shù)組中值包含1.0的元素

<p v-for="item in items | filterBy '1.0' in 'name'">{{ item | json }}</p> //檢索items中元素屬性name值為1.0的元素輸出。檢索區(qū)域也可以為數(shù)組,即in [name,version],在多個屬性中進行檢索。

//輸出結(jié)果
vue1.0
{"name":"vue1.0","version":"1.0"}

使用自定義的過濾函數(shù),函數(shù)可以在選項methods中定義

<p v-for="item in items | filterBy customFilter"
  methods:{
    cuestomFilter:function(item){
      if(item.name) return true;  //檢索所有元素中包含name屬性的元素
    }
  }

orderBy:傳入值必須是數(shù)組,參數(shù)為{String|Array|Function}sortKeys,即指定排序的策略。

單個鍵名:

<p v-for="item in items | orderBy 'name' -1">{{ item.name}}</p> //items數(shù)組中以鍵名name進行降序排列

多個鍵名:

<p v-for="item in items | orderBy [name,version]">{{item.name}}</p> //使用items里的兩個鍵名進行排序

自定義排序函數(shù):

<p v-for="item in items | orderBy customOrder">{{item.name}}</p>
methods:{
  customOrder: function(a,b){
    return parseFloat(a.version) > parseFloat(b.version) //對比item中version的值的大小進行排序
  }
}

5.指令

指令的值限定為綁定表達式,即當表達式的值發(fā)生改變時,會有些特殊行為作用到綁定的DOM上。

參數(shù):src為參數(shù)

<img v-bind:src="avatar" /> <==>  <img src="{{avatar}}" />

修飾符:以半角句號.開始的特殊后綴,用于表示指令應(yīng)該以特殊方式綁定。

<button v-on:click.stop="doClick"></button> //stop:停止冒泡。相當于調(diào)用了e.stopPropagagation().

計算屬性

避免在模板中加入過重的業(yè)務(wù)邏輯,保證模版的結(jié)構(gòu)清晰和可維護性。

1.基礎(chǔ)例子

var vm = new Vue({
    el: '#app',
    data: {
      firstName:'Gavin',
      lastName:'CLY'
    },
    computed: {
      fullName:function(){
        //this指向vm實例
        return this.firstName + ' ' + this.lastName;
      }
    }
})

<p>{{ firstName }}</p>  //Gavin
<p>{{ lastName }}</p>  //CLY
<p>{{ fullName }}</p>  //Gavin CLY

注:此時對vm.firstNamevm.lastName進行修改,始終會影響vm.fullName。

2.Setter

更新屬性時帶來便利

var vm = new Vue({
    el:'#el',
    data:{
      cents:100
    },
    computed:{
      price:{
        set:function(newValue) {
          this.cents = newValue * 100;
        },
        get:function(){
          return (this.cents / 100).toFixed(2);
        }
      }
    }
})

表單控件

v-model:對表單元素進行雙向數(shù)據(jù)綁定,在修改表單元素值時,實例vm中對應(yīng)的屬性值也同時更新,反之亦然。

var vm = new Vue({
    el:'#app',
    data: {
      message: '',
      gender: '',
      cheched: '',
      multiChecked: '',
      a: 'checked',
      b: 'checked'
    }
})

1. Text

輸入框示例,用戶輸入的內(nèi)容和vm.message直接綁定:

<input type="text" v-model="message" />
<span>Your input is : {{ message }} </span>

2. Radio

單選框示例:

<label><input type="radio" value="male" v-model="gender">男</lable>
<label><input type="radio" value="famale" v-model="gender">女</lable>
<p>{{ gender }}</p> //顯示的是value值

3.Checkbox

單個勾選框,v-model即為布爾值,此時Input的value并不影響v-model的值。

<input type="checkbox" v-model="checked" />
<span>checked: {{ checked }} </span> //顯示的是true/false

多個勾選框,v-model使用相同的屬性名稱,且屬性為數(shù)組。

<label><input type="checkbox" value="1" v-model="multiChecked">1</label>
<label><input type="checkbox" value="1" v-model="multiChecked">2</label>
<label><input type="checkbox" value="1" v-model="multiChecked">3</label>
<p>MultiChecked:{{ multiChecked.join{'|'} }}</p> //multiChecked:1|2

4.Select

單選

<select v-model="selected">
  <option selected>A</option>
  <option>B</option>
  <option>C</option>
</select>
<span>Selected: {{ selected }}</span>

多選

<select v-model="multiSelected" multiple>
  <option selected>A</option>
  <option>B</option>
  <option>C</option>
</select>
<span>MultiSelected: {{ multiSelected.join('|') }}</span>

5.綁定value

通過v-bind實現(xiàn),表單控件的值綁定到Vue市里的動態(tài)屬性上。

Checkbox

<input type="checkbox" v-model="checked" v-bind:true-value="a" v-bind:false-value="b" />

選中:

vm.checked == vm.a  //=> true

未選中:

vm.checked == vm.b //=>true

Radio

<input type="radio" v-model="checked" v-bind:value="a" >

選中:

vm.checked == vm.a //=> true

3.Select Options

<select v-model="selected">
    <!-- 對象字面量 -->
    <option v-bind:value="{ number:123}">123</option>
</select>

選中:

typeof vm.selected //=> object
vm.selected.number //=> 123

6.參數(shù)特性

.lazy:默認情況下,v-model在input事件中同步輸入框與數(shù)據(jù),加lazy屬性后會在change事件中同步。

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >

.number:自動將用戶輸入轉(zhuǎn)為Number類型,如果原值轉(zhuǎn)換結(jié)果為NaN,則返回原值。

<input v-model.number="age" type="number">

.trim:如果要自動過濾用戶輸入的首尾空格,可以添加 trim 修飾符到 v-model 上過濾輸入

<input v-model.trim="msg">

Class與Style綁定

1.Class綁定

對象語法:v-bind:class接受參數(shù)是一個對象,而且可以與普通的class屬性共存。

<div class="tab" v-bind:class="{'active':active,'unactive':!active}"></div>

vm實例中需要包含:

data:{
  active:true
}

渲染結(jié)果為:

<div class="tab active"></div>

數(shù)組語法:v-bind:class也接受數(shù)組作為參數(shù)。

<div v-bind:class="[classA,classB]"></div>

vm實例中需要包括:

data:{
  classA:"class-a",
  classB:"class-b"
}

渲染結(jié)果為:

<div class="class-a class-b"></div>

使用三元表達式切換數(shù)組中的class

<div v-bind:class="[classA,isB?classB:""]"></div>

vm.isB = false

則渲染結(jié)果為

<div class="class-a"></div>

2.內(nèi)聯(lián)樣式綁定(style屬性綁定)

對象語法:直接綁定符合樣式格式的對象。

<div v-bind:style="alertStyle"></div>

vm實例中包含:

data:{
  alertStyle:{
    color: 'red',
    fontSize: '2px'
  }
}

<div v-bind:style="{fontSize:alertStyle.fontSize,color:'red'}"></div>

數(shù)組語法:v-bind:style允許將多個樣式對象綁定到同一元素上。

<div v-bind:style="[ styleObjectA,styleObjectB]" .></div>

3.自動添加前綴

在使用transform這類屬性時,v-bind:style會根據(jù)需要自動添加廠商前綴。:style在運行時進行前綴探測,如果瀏覽器版本本省就不支持不加前綴的css屬性,那就不會添加。

希望本文所述對大家vue.js程序設(shè)計有所幫助。

相關(guān)文章

  • 完美解決element-ui的el-input設(shè)置number類型后的相關(guān)問題

    完美解決element-ui的el-input設(shè)置number類型后的相關(guān)問題

    這篇文章主要介紹了完美解決element-ui的el-input設(shè)置number類型后的相關(guān)問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Vue中使用Tailwind CSS的具體方法

    Vue中使用Tailwind CSS的具體方法

    本文主要介紹了Vue中使用Tailwind CSS的具體方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • VScode格式化ESlint方法(最全最好用方法)

    VScode格式化ESlint方法(最全最好用方法)

    這篇文章主要介紹了VScode格式化ESlint方法(最全最好用方法),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue3中如何使用live2D

    vue3中如何使用live2D

    本文介紹了如何在Vue3項目中整合Live2D技術(shù),從Live2D的基本介紹到在Vue3中的具體實現(xiàn)方法,Live2D技術(shù)允許開發(fā)者將二維圖像轉(zhuǎn)化為可動畫的三維模型,主要應(yīng)用于游戲、虛擬角色等領(lǐng)域,文章詳細說明了在vue3項目中使用Live2D的步驟,感興趣的朋友一起看看吧
    2024-10-10
  • Vue2 添加數(shù)據(jù)可視化支持的方法步驟

    Vue2 添加數(shù)據(jù)可視化支持的方法步驟

    這篇文章主要介紹了Vue2 添加數(shù)據(jù)可視化支持的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vue3項目中配置sass,vite報錯Undefined mixin問題

    vue3項目中配置sass,vite報錯Undefined mixin問題

    這篇文章主要介紹了vue3項目中配置sass,vite報錯Undefined mixin問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 使用vue-router設(shè)置每個頁面的title方法

    使用vue-router設(shè)置每個頁面的title方法

    下面小編就為大家分享一篇使用vue-router設(shè)置每個頁面的title方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 在vue中實現(xiàn)PDF文件流預(yù)覽功能

    在vue中實現(xiàn)PDF文件流預(yù)覽功能

    這篇文章主要為大家詳細介紹如何在vue中實現(xiàn)PDF文件流預(yù)覽功能,文中的實現(xiàn)步驟講解詳細,對大家的學(xué)習(xí)或工作具有一定的參考價值,需要的可以參考一下
    2023-12-12
  • vue中使用ts配置的具體步驟

    vue中使用ts配置的具體步驟

    這篇文章主要介紹了vue中使用ts配置的具體步驟,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • electron + vue項目實現(xiàn)打印小票功能及實現(xiàn)代碼

    electron + vue項目實現(xiàn)打印小票功能及實現(xiàn)代碼

    這篇文章主要介紹了electron + vue項目實現(xiàn)打印小票功能,需要的朋友可以參考下
    2018-11-11

最新評論