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

首頁 > 編程 > JavaScript > 正文

vuejs指令詳解

2019-11-19 17:41:59
字體:
來源:轉載
供稿:網友

v-if

v-if指令可以完全根據表達式的值在DOM中生成或移除一個元素。如果v-if表達式賦值為false,那么對應的元素就會從DOM中移除;否則,對應元素的一個克隆將被重新插入DOM中,代碼如下:

<div id="example-2"> <p v-if="greeting">Hello!</p></div><script type="text/javascript"> var exampleVM2 = new Vue({ el: '#example-2', data: { greeting: true } })</script>

由于v-if是一個指令,需要將它添加到一個元素上。但是如果想要切換多個元素,則可以把<template>元素當做包裝元素,并在其上使用v-if,最終的渲染結果不會包含它。代碼如下:

<div id="example-2"> <template v-if="greeting"> <h1>Title</h1> <p>Paragraph 1</p> <p>Paragraph 1</p> </template></div><script type="text/javascript"> var exampleVM2 = new Vue({ el: '#example-2', data: { greeting: true } })</script>

v-show

v-show指令是根據表達式的值來顯示或者隱藏HTML元素。當v-show賦值為false時,元素被隱藏。查看DOM時,會發現元素上多了一個內聯樣式style="display:none"。

如圖所示:

注:v-show不支持<template>語法。

一般來說,v-if有更高的切換消耗,而v-show有更高的初始渲染消耗。因此,如果需要頻繁的切換,則使用v-show較好;如果在運行時條件不大可能改變,則使用v-if較好。

v-else

v-else就是JavaScript中的else的意思,它必須跟著v-if或者v-show使用。如下代碼:

<div id="example"> <P v-if="ok">我是對的</P> <p v-else="ok">我是錯的</p></div><script type="text/javascript"> var exampleVM2 = new Vue({ el: '#example', data: { ok: false } })</script>

將v-show用在組件上時,因為指令的優先級v-else會出現問題,所以不要這樣做。我們可用用另一個v-show替換v-else。

v-model

v-model指令用來在input、select、text、checkbox、radio等表單控件元素上創建雙向數據綁定的。根據控件類型v-model自動選取正確的方法更新元素。代碼如下:

<div id="example"> <form> 姓名: <input type="text" v-model="data.name" placeholder="姓名"/> <br /> 性別: <input type="radio" id="one" value="One" v-model="data.sex"/> <label for="man">男</label> <input type="radio" id="two" value="Two" v-model="data.sex"/> <label for="male">女</label> <br /> <input type="checkbox" id="jack" value="book" v-model="data.interest"/> <label for="jack">閱讀</label> <input type="checkbox" id="john" value="swim" v-model="data.interest"/> <label for="john">游泳</label> <input type="checkbox" id="move" value="game" v-model="data.interest"/> <label for="move">游戲</label> <input type="checkbox" id="mike" value="song" v-model="data.interest"/> <label for="mike">唱歌</label> <br /> 身份: <select v-model="data.identity"> <option value="teacher" selected>教師</option> <option value="doctor">醫生</option> <option value="lawyer">律師</option> </select>  </form></div><script type="text/javascript"> new Vue({ el: '#example', data: { data:{ name:'', sex:'', interest:[], identity:'' } } })</script>

除了以上用法,在v-model指令后面還可以添加多個參數(number、lazy、debounce)。

1.number

如果想要用戶的輸入自動轉換為Number類型(如果原值的轉換結果為NAN,則返回原值),則可以添加一個number特性。

2.lazy

在默認情況下,v-model在input事件中同步輸入框的值與數據,我們可以添加一個lazy特性,從而將數據改到在change事件中發生。代碼如下:

<div id="example"> <input v-model="msg" lazy style="width:500px;"/><br/> {{msg}}</div><script type="text/javascript"> new Vue({ el: '#example', data: { msg:'內容是在change事件后才改變的~' }, watch:{  } })</script>

3.debounce

設置一個最小的延時,在每次敲擊之后延時同步輸入框的值與數據。如果每次更新都要進行高耗操作(例如,在input中輸入內容時要隨時發送ajax請求),那么它較為有用。

<input v-model="msg" debounce="5000"/>

v-repeat

v-repeat(已經廢除)指令基于源數據重復渲染元素??梢允褂?index來呈現相對應的數組索引。不細講。

數組變動檢測

Vue.js 包裝了被觀察數組的變異方法,故它們能觸發視圖更新。被包裝的方法有:push(), pop(), shift(), unshift(), splice(), sort(), reverse()

example1.items.push({ message: 'Baz' });example1.items = example1.items.filter(function (item) { return item.message.match(/Foo/);});

vue.js還增加了兩個方法來觀測變化:$set、$remove。

我們應該盡量避免直接設置數據綁定的數組元素,因為這些變化不會被vue.js檢測到,因而也不會更新視圖渲染。可以使用$set方法:

demo.items.$set(0,{childMsg:'Changed!'})

$remove是$splice的語法糖,用于從目標數組中查找并刪除元素:

demo.items.$remove(0);

注:ECMAScript5無法檢測到新屬性添加到一個對象上或者在對象上刪除。要處理這種情況,Vue.js增加了三種方法:$add(key,value)、$set(key,value)、$delete(key,value),這些方法可以用來添加和刪除屬性,同時觸發視圖更新。

內置過濾器

1.filterBy(0.12版本)

 實現如圖所示:

<div id="example"> <input v-model="searchText"/> <ul> <li v-for="user in users | filterBy searchText in 'name' ">{{user.name}}</li> </ul></div><script type="text/javascript"> new Vue({ el: '#example', data: { users:[ { name:'快車', tag:'1' }, { name:'出租車', tag:'2' }, { name:'順風車', tag:'3' }, { name:'專車', tag:'4' } ] } })</script>

在輸入框中輸入'專車',得到如圖所示的結果:

2.orderBy(0.12版本)

實現降序排列,例:

<div id="example"> <ul> <li v-for="user in users | orderBy field reverse">{{user.name}}</li> </ul></div><script type="text/javascript"> new Vue({ el: '#example', data: { field:'tag', reverse:-1, users:[ { name:'出租車', tag:'2' }, { name:'快車', tag:'1' }, { name:'順風車', tag:'3' }, { name:'專車', tag:'4' } ] } })</script>

v-for

使用$index來獲得相應的數組索引。

<div id="example"> <ul> <li v-for="item of items" class="item-{{$index}}"> {{$index}} - {{parentMessage}} - {{item.msg}} </li> </ul></div><script type="text/javascript"> new Vue({ el: '#example', data: { parentMessage:'滴滴', items:[ {msg:'順風車'}, {msg:'專車'} ] } })</script>

注:vuejs1.0.17及以后低版本支持of分隔符,更接近JavaScript遍歷器語法。

有時我們可能想重復一個包含多個DOM元素的塊,可以使用<template>,如:

<ul> <template v-for="item in items"> <li>{{ item.msg }}</li> <li class="divider"></li> </template></ul>

v-for也支持整數

代碼如下:

<div> <span v-for="n in 10">{{ n }} </span></div>

或者

<div> <span v-for="n in 10">{{ $index }} </span></div>

v-text

v-text指令可以更新元素的textContent.

<span v-text="msg"></span><br/><span>{{msg}}</span>

得到的結果一樣。

v-html

v-html指令更新元素的innerHTML。

<div id="example"> <p v-html="html"></p> <p>{{{html}}}</p></div><script type="text/javascript"> new Vue({ el: '#example', data: { html:'<p>效果一樣</p>' } })</script>

注:不建議在網站上直接動態渲染任意HTML片段,很容易導致XSS攻擊。

v-bind

v-bind指令用于響應更新HTML特性,將一個或者多個attribute,或者一個組件prop動態綁定到表達式。v-bind可以簡寫為:

<!-- 完整語法 --><a v-bind:href="url" rel="external nofollow" rel="external nofollow" ></a><!-- 縮寫 --><a :href="url" rel="external nofollow" rel="external nofollow" ></a><!-- 完整語法 --><button v-bind:disabled="someDynamicCondition">Button</button><!-- 縮寫 --><button :disabled="someDynamicCondition">Button</button>

在綁定class或者style時,支持其他類型的值,如數組或對象。如:

<div id="example"> <div :class="[classA,{classB:isB,classC:isC}]"></div></div><script type="text/javascript"> new Vue({ el: '#example', data: { classA:'A', isB:false, isC:true } })</script>

結果如圖:

如果沒有參數時,可以綁定到一個對象。注意,此時class和style綁定不支持數組和對象(對象key會轉換為小寫)。代碼如下:

<div id="example"> <div v-bind="{id:someProp,'OTHERATTR':otherProp}"></div></div><script type="text/javascript"> new Vue({ el: '#example', data: { someProp:'idName', otherProp:'prop' } })</script>

結果如圖:

在綁定prop時,prop必須在子組件中聲明。可以用修飾符指定不同的綁定類型。修飾符為:

.sync――雙向綁定,只能用于prop綁定。

.once――單次綁定,只能用于prop綁定。

.camel――將綁定的特性名字轉換回駝峰命名。只能用于普通HTML特性的綁定,通常用于綁定用駝峰命名的SVG特性,比如viewBox。

v-on

v-on指令用于綁定事件監聽器。事件類型由參數指定。

如果訪問原始DOM事件,可以使用$event傳入方法。

<button v-on:click="doThis('hello',$event)"></button><!--縮寫--><button @click="doThis('hello',$event)"></button>

完整例子:

<div id="example"> <button v-on:click="greet">Greet</button></div>var vm = new Vue({ el: '#example', data: { name: 'Vue.js' }, // 在 methods 對象中定義方法 methods: { greet: function (event) { // 方法內 this 指向 vm alert('Hello ' + this.name + '!') // event 是原生 DOM 事件 alert(event.target.tagName) } }})// 也可以在 JavaScript 代碼中調用方法vm.greet(); // -> 'Hello Vue.js!'

###事件修飾符

<!-- 阻止單擊事件冒泡 --><a v-on:click.stop="doThis"></a><!-- 提交事件不再重載頁面 --><form v-on:submit.prevent="onSubmit"></form><!-- 修飾符可以串聯 --><a v-on:click.stop.prevent="doThat"><!-- 只有修飾符 --><form v-on:submit.prevent></form>

### 按鍵修飾符

<!-- 只有在 keyCode 是 13 時調用 vm.submit() --><input v-on:keyup.13="submit"><!-- 同上 --><input v-on:keyup.enter="submit"><!-- 縮寫語法 --><input @keyup.enter="submit">

全部的按鍵別名:enter,tab,delete,esc,space,up,down,left,right

v-ref

在父組件上注冊一個子組件的索引,便于直接訪問。不需要表達式,必須提供參數id??梢酝ㄟ^父組件的$refs對象訪問子組件。

v-el

為DOM元素注冊一個索引,方便通過所屬實例的$els訪問這個元素??梢杂胿-el:some-el設置this.$els.someEl。

<span v-el:msg>hello</span><span v-el:other-msg>world</span>

通過this.$els獲取相應的DOM元素:

this.$els.msg.textContent //'hello'this.$els.otherMsg.textContent //'world'

在新的vuejs中,簡單起見, v-el 和 v-ref 合并為一個 ref 屬性了,可以在組件實例中通過 $refs 來調用。

v-pre

跳過這個元素和它的子元素的編譯過程。可以用來顯示原始 Mustache 標簽。跳過大量沒有指令的節點會加快編譯。

<span v-pre>{{ this will not be compiled }}</span>

v-cloak

這個指令保持在元素上直到關聯實例結束編譯。和 CSS 規則如 [v-cloak] { display: none } 一起用時,這個指令可以隱藏未編譯的 Mustache 標簽直到實例準備完畢。

css代碼:

[v-cloak] { display: none;}

html:

<div v-cloak> {{ message }}</div>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩在线观看| 久久91精品国产91久久跳| 日本久久久久久久久| www.色综合| 日韩美女在线观看| 亚洲国产一区二区三区四区| 538国产精品一区二区免费视频| 国产精品福利在线观看网址| 日韩av在线免费看| 色综合久久久888| 亚洲情综合五月天| 91精品国产乱码久久久久久蜜臀| 国产欧美精品一区二区| 亚洲男人天堂2024| 久久久av一区| 亚洲片国产一区一级在线观看| 成人av番号网| 一区二区三区国产在线观看| 日韩欧美精品中文字幕| 亚洲直播在线一区| 国产成人精品视频在线| 久久久免费高清电视剧观看| 国产z一区二区三区| 精品国产视频在线| 亚洲欧美国产日韩天堂区| 亚洲男人天堂视频| 91精品国产高清自在线看超| 亚洲国产古装精品网站| 在线观看欧美视频| 成人黄色免费网站在线观看| 91久久久亚洲精品| 国产91在线播放精品91| 欧美日韩在线看| 91豆花精品一区| 欧美日本亚洲视频| 热re99久久精品国产66热| 国产精品久久久久91| 久久久噜噜噜久久| 国产成人久久久精品一区| 亚洲激情视频在线播放| 狠狠色狠狠色综合日日小说| 国产91露脸中文字幕在线| 丝袜美腿亚洲一区二区| 国产精品久久久久77777| 亚洲影视九九影院在线观看| 亚洲成人xxx| 亚洲乱亚洲乱妇无码| 国产成一区二区| 日本午夜人人精品| 日本一区二区三区在线播放| 欧美成人免费观看| 亚洲高清福利视频| 97国产精品视频人人做人人爱| 亚洲福利精品在线| 国产丝袜一区二区三区免费视频| 富二代精品短视频| 91视频国产一区| 亚洲成人激情小说| 亚洲自拍中文字幕| 欧美综合国产精品久久丁香| 国产成人综合一区二区三区| 成人免费午夜电影| 中文字幕亚洲欧美日韩高清| 亚洲最大成人在线| 欧美精品一区二区三区国产精品| 午夜欧美不卡精品aaaaa| 欧美日韩精品在线观看| 成人黄色免费片| www国产亚洲精品久久网站| 日韩av影院在线观看| 国产999精品久久久| 欧美日韩国产色视频| 亚洲黄色成人网| 国产精品久久久久久久久久久久| 91精品国产综合久久久久久久久| 国产精品美女在线观看| 最近2019好看的中文字幕免费| 亚洲精品久久久久久久久| 精品欧美aⅴ在线网站| 久久久国产视频91| 亚洲国产欧美精品| 欧美国产极速在线| 日韩在线精品视频| 亚洲天堂视频在线观看| 九九精品视频在线观看| 国产精品v片在线观看不卡| 国产主播精品在线| 狠狠操狠狠色综合网| 欧美日韩第一页| 色先锋资源久久综合5566| 国产精品视频大全| 久久亚洲影音av资源网| 亚洲欧美激情精品一区二区| 亚洲精品国精品久久99热| 国产97在线亚洲| 亚洲国产中文字幕在线观看| 中文字幕欧美日韩| 日韩毛片在线看| 91亚洲午夜在线| 欧美性猛交xxxx| 亚洲精品自在久久| 日韩精品久久久久久久玫瑰园| 国产午夜精品一区二区三区| 亚洲美女视频网站| 日韩动漫免费观看电视剧高清| 俺去啦;欧美日韩| 日韩欧美亚洲综合| 国内精品久久久久久| 亚洲sss综合天堂久久| 亚洲人成人99网站| 91精品在线观| 理论片在线不卡免费观看| 一区国产精品视频| 欧美裸体男粗大视频在线观看| 亚洲第一福利在线观看| 中文字幕精品在线视频| 精品动漫一区二区三区| 国产在线观看一区二区三区| 中文字幕综合在线| 亚洲加勒比久久88色综合| 日韩一区二区久久久| 亚洲小视频在线观看| 成人免费视频网| 在线激情影院一区| 欧美在线视频免费| 日韩在线激情视频| 久久免费精品视频| 久久精品色欧美aⅴ一区二区| 欧美极品在线播放| 亚洲男人天堂2019| 一区二区福利视频| 久久激情视频免费观看| 亚洲欧美三级伦理| 国产精品影院在线观看| 成人中文字幕+乱码+中文字幕| 日韩成人av在线播放| 成人网欧美在线视频| 26uuu日韩精品一区二区| 91av网站在线播放| 久久精品电影网站| 久久久噜久噜久久综合| 久久久久久久久久久久av| 亚洲精品不卡在线| 日韩精品在线免费| 欧美另类69精品久久久久9999| 国产日韩精品在线播放| 精品国产一区二区三区久久| 欧美第一淫aaasss性| 国产伦精品免费视频| 欧美有码在线观看视频| 最新69国产成人精品视频免费| 欧美激情按摩在线| 91精品国产综合久久香蕉| 久久综合国产精品台湾中文娱乐网| 俺去亚洲欧洲欧美日韩| 丰满岳妇乱一区二区三区| 久久91亚洲精品中文字幕奶水| 国产精品久久久久久久久久ktv| 亚洲欧美国产日韩中文字幕| 激情久久av一区av二区av三区| 在线日韩精品视频| 欧美xxxx做受欧美| 98精品国产自产在线观看| 国产乱人伦真实精品视频|