亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue.js數據綁定操作詳解

2019-11-19 13:58:06
字體:
來源:轉載
供稿:網友

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

數據綁定

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

數據綁定語法

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標簽內的文本內容。除了直接輸出屬性值之外,一段綁定表達式可以由一個簡單的JavaScript表達式和可選的一個或多個過濾器構成(不支持正則表達式,若需要復雜的轉換,則使用過濾器或者計算屬性來進行處理)。

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

4.過濾器

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

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

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

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

例如:

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

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

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

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

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

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

<p v-for="c in count">{{ c | pluralize 'item' }} {{ c | pliralize 'st' 'nd' 'rd' 'th' }} </p>
//輸出結果:1item 1st2items 2nd3items 3rd4items 4th

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

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

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

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

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

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

<p v-for="name in names | filterBy '1.0'">{{ name }}</p> //檢索names數組中值包含1.0的元素<p v-for="item in items | filterBy '1.0' in 'name'">{{ item | json }}</p> //檢索items中元素屬性name值為1.0的元素輸出。檢索區域也可以為數組,即in [name,version],在多個屬性中進行檢索。
//輸出結果vue1.0{"name":"vue1.0","version":"1.0"}

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

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

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

單個鍵名:

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

多個鍵名:

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

自定義排序函數:

<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.指令

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

參數:src為參數

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

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

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

計算屬性

避免在模板中加入過重的業務邏輯,保證模版的結構清晰和可維護性。

1.基礎例子

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:對表單元素進行雙向數據綁定,在修改表單元素值時,實例vm中對應的屬性值也同時更新,反之亦然。

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

1. Text

輸入框示例,用戶輸入的內容和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使用相同的屬性名稱,且屬性為數組。

<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實現,表單控件的值綁定到Vue市里的動態屬性上。

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 //=> objectvm.selected.number //=> 123

6.參數特性

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

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

.number:自動將用戶輸入轉為Number類型,如果原值轉換結果為NaN,則返回原值。

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

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

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

Class與Style綁定

1.Class綁定

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

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

vm實例中需要包含:

data:{  active:true}

渲染結果為:

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

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

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

vm實例中需要包括:

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

渲染結果為:

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

使用三元表達式切換數組中的class

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

vm.isB = false

則渲染結果為

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

2.內聯樣式綁定(style屬性綁定)

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

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

vm實例中包含:

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

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

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

3.自動添加前綴

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性感美女h网站在线观看免费| 欧美黑人性生活视频| 亚洲欧美一区二区激情| 亚洲国产精品中文| 久久久之久亚州精品露出| 国产精品电影网| 国产精品专区h在线观看| 久久影院模特热| 国产精品1区2区在线观看| 亚洲xxx视频| 国产精品对白刺激| 国产91精品视频在线观看| 最近中文字幕2019免费| 91久久久久久久一区二区| 欧美精品www| 伊人久久免费视频| 日韩视频免费在线| 国产性猛交xxxx免费看久久| 91中文精品字幕在线视频| 亚洲黄色在线看| 欧美日韩免费看| 国产精品美女久久久久av超清| 91wwwcom在线观看| 欧美国产日韩精品| 国产深夜精品福利| 日本国产高清不卡| 国产亚洲精品久久久久久| 成人夜晚看av| 中文字幕亚洲一区二区三区五十路| 久久久久久91香蕉国产| 揄拍成人国产精品视频| 精品久久久久久国产91| 中文字幕日韩精品在线| 国产精品国产三级国产专播精品人| 国产亚洲人成a一在线v站| 日韩欧美高清在线视频| 亚洲欧美一区二区三区情侣bbw| 久久久精品2019中文字幕神马| 亚洲一区中文字幕在线观看| 成人亚洲欧美一区二区三区| 亚洲成色www8888| 欧美日韩国产一区二区三区| 亚洲精品一区久久久久久| 在线观看亚洲视频| 欧美日韩精品在线| 久久精品影视伊人网| 91九色国产在线| 日韩资源在线观看| 日本高清+成人网在线观看| 国产精品最新在线观看| 欧美乱大交xxxxx| 不卡在线观看电视剧完整版| 国产视频精品免费播放| 亚洲激情在线视频| 亚洲成人a级网| 国产一区二区精品丝袜| 久热精品视频在线观看一区| 亚洲xxx视频| 精品国产一区二区三区久久久狼| 欧美激情影音先锋| 日韩国产高清污视频在线观看| 欧美在线视频观看免费网站| 亚洲精品白浆高清久久久久久| 亚洲人成在线观| 中文字幕欧美亚洲| 精品国产欧美一区二区三区成人| 日韩中文在线视频| 日韩av中文在线| 日韩亚洲国产中文字幕| 国产日本欧美一区| 国产欧美精品在线| 韩国视频理论视频久久| 色综合久久中文字幕综合网小说| 国产精品日韩在线观看| 社区色欧美激情 | 亚洲精品av在线播放| 久久91超碰青草是什么| 91国偷自产一区二区三区的观看方式| 91精品成人久久| 欧美日韩成人网| 美日韩精品免费视频| 国产小视频国产精品| 亚洲福利视频二区| 亚洲国产成人爱av在线播放| 日韩成人免费视频| 欧美日韩亚洲精品一区二区三区| 欧美日韩在线观看视频| 国产精品高潮视频| 91久久久久久久一区二区| 国产精品wwww| 欧美性videos高清精品| 精品国产乱码久久久久久虫虫漫画| 91高清视频免费| 欧美高清在线播放| 国产精品6699| 国产精品av在线| 一区二区av在线| 日韩av一卡二卡| 欧美日韩成人在线视频| 亚洲欧美日韩精品久久亚洲区| 国产精品扒开腿做爽爽爽男男| 亚洲精品www| 日韩有码在线观看| 国产精品视频xxxx| 国产日韩av在线| 亚洲欧美日韩另类| 欧美中文在线视频| 亚洲日韩欧美视频一区| 亚洲热线99精品视频| 日韩成人激情影院| 久久久久久久亚洲精品| 欧美片一区二区三区| 狠狠久久五月精品中文字幕| 97精品欧美一区二区三区| 日韩亚洲欧美成人| 亚洲精品网站在线播放gif| 亚洲精品动漫100p| 91精品国产色综合久久不卡98口| 亚洲精选在线观看| 色综合久久精品亚洲国产| 亚洲午夜精品久久久久久久久久久久| 欧美精品第一页在线播放| 欧美国产日韩一区| 亚洲性生活视频| 欧美精品久久久久久久免费观看| 亚洲精品videossex少妇| 91在线视频免费| 亚洲性视频网址| 久久人体大胆视频| 亚洲成色777777在线观看影院| 欧美在线性视频| 亚洲国产中文字幕在线观看| 97久久精品人人澡人人爽缅北| 性欧美xxxx| 久久成人18免费网站| 欧美日韩综合视频网址| 国外色69视频在线观看| 欧美精品在线免费观看| 国产美女精品免费电影| 精品在线小视频| 欧美日韩中文字幕日韩欧美| 日韩一区视频在线| 久久电影一区二区| 日韩精品在线视频观看| 欧美片一区二区三区| 国产成人精品久久亚洲高清不卡| 午夜精品久久久久久久白皮肤| 欧美在线精品免播放器视频| 精品国产91久久久久久| 欧美激情视频一区二区三区不卡| 精品视频在线导航| 国产日韩精品综合网站| 欧美激情按摩在线| 精品国产91乱高清在线观看| 97色在线视频观看| 欧美怡春院一区二区三区| 亚洲日韩中文字幕| 国产精品揄拍一区二区| 亚洲精品国产精品国产自| 欧美日韩第一页| 亚洲欧洲美洲在线综合| 国产精品视频一区二区高潮| 久久香蕉国产线看观看av| 欧美尺度大的性做爰视频|