Vue 2.0指令介紹

live-server使用

npm install live-server -g
live-server

一匀归、v-if & v-show

示例:
v-if

<div id="app">
<div v-if="isLogin">你好!Fang</div>
</div>
<script>
let app = new Vue({
  el: '#app',
  data: {
    isLogin:true
  }
})
</script>

這里我們?cè)趘ue的data里定義了isLogin的值阱扬,當(dāng)它為true時(shí)幽污,網(wǎng)頁(yè)就會(huì)顯示:你好!Fang咕痛,如果為false時(shí)痢甘,就顯示請(qǐng)登錄后操作。

v-show
調(diào)整css中display屬性茉贡,DOM已經(jīng)加載塞栅,只是CSS控制沒(méi)有顯示出來(lái)。

<div v-show="isLogin">你好:JSPang</div>

v-if 和v-show的區(qū)別:
v-if: 判斷是否加載块仆,可以減輕服務(wù)器的壓力构蹬,在需要時(shí)加載。
v-show:調(diào)整css dispaly屬性悔据,可以使客戶端操作更加流暢

二庄敛、v-for使用:

基本用法:
<body>
    <div id="app">
       <ul>
           <li v-for="item in items">
                {{item}}
           </li>
       </ul>
    </div>

    <script>
        var app=new Vue({
            el:'#app',
            data:{
                items:[20,23,18,65,32,19,54,56,41]
            }
        })
    </script>
</body>

這是一個(gè)最基礎(chǔ)的循環(huán),先在js里定義了items數(shù)組科汗,然后在模板中用v-for循環(huán)出來(lái)藻烤,需要注意的是,你需要那個(gè)html標(biāo)簽循環(huán)头滔,v-for就寫(xiě)在那個(gè)上邊怖亭。

數(shù)組如何排序:
我們已經(jīng)順利的輸出了我們定義的數(shù)組,但是我需要在輸出之前給數(shù)組排個(gè)序坤检,那我們就用到了Vue的computed:屬性兴猩。

computed:{
    sortItems:function(){
          return this.items.sort();
    }
} 

我們?cè)赾omputed里新聲明了一個(gè)對(duì)象sortItems,如果不重新聲明會(huì)污染原來(lái)的數(shù)據(jù)源早歇,這是Vue不允許的倾芝,所以你要重新聲明一個(gè)對(duì)象。

若只用sort方法是得不到想要的數(shù)據(jù)的,我們可以自己編寫(xiě)一個(gè)方法sortNumber箭跳,然后傳給我們的sort函數(shù)

computed:{
    sortItems:function(){
          return this.items.sort(sortNumber);
    }
} 

function sortNumber(a,b){
       return a-b
  }
依次輸出:
18
19
20
23
32
41
54
56
65
對(duì)象循環(huán)輸出:

首先得定義一個(gè)數(shù)組晨另,數(shù)組里邊是對(duì)象數(shù)據(jù)

students:[
  {name:'jspang',age:32},
  {name:'Panda',age:30},
  {name:'PanPaN',age:21},
  {name:'King',age:45}
]

在模板中輸出

<ul>
   <li v-for="student in students">
       {{student.name}} - {{student.age}}
   </li>
</ul>

加入索引序號(hào)

<ul>
  <li v-for="(student,index) in students">
    {{index}}:{{student.name}} - {{student.age}}
  </li>
</ul>

排序,我們先加一個(gè)原生的對(duì)象形式的數(shù)組排序方法

//數(shù)組對(duì)象方法排序:
function sortByKey(array,key){
    return array.sort(function(a,b){
      var x=a[key];
      var y=b[key];
      return ((x<y)?-1:((x>y)?1:0));
   });
}

有了數(shù)組的排序方法谱姓,在computed中進(jìn)行調(diào)用排序

sortStudent:function(){
     return sortByKey(this.students,'age');
}

三借尿、v-text & v-html

<div id="app">
    <span>{{ message }}</span> = <span v-text="message"></span><br/>
    //如果在javascript中寫(xiě)有html標(biāo)簽,用v-text是輸出不出來(lái)的,這時(shí)候我們就需要用v-html標(biāo)簽
    <span v-html="msgHtml"></span>
</div>

<script>
    var app=new Vue({
        el:'#app',
        data:{
            message:'hello Vue!',
            msgHtml:'<h2>hello Vue!</h2>'
        }
    })
</script>

注:在生產(chǎn)環(huán)境中動(dòng)態(tài)渲染HTML是非常危險(xiǎn)的路翻,因?yàn)槿菀讓?dǎo)致XSS攻擊狈癞。所以只能在可信的內(nèi)容上使用v-html,永遠(yuǎn)不要在用戶提交和可操作的網(wǎng)頁(yè)上使用帚桩。

四亿驾、v-model指令

1、一個(gè)最簡(jiǎn)單的雙向數(shù)據(jù)綁定代碼:

<div id="app">
原始文本信息:{{message}}
<br>
<h3>文本框</h3>

<p>v-model:
  <input type="text" v-model="message">
</p>
<p>v-model.lazy:
  <input type="text" v-model.lazy="message">
</p>
<p>v-model.number:
  <input type="text" v-model.number="message">
</p>
<p>v-model.trim:
  <input type="text" v-model.trim="message">
</p>
//JS
var app=new Vue({
  el:'#app',
  data:{
       message:'hello Vue!'
  }
 })

輸出:
文本框里的內(nèi)容改變?cè)嘉谋拘畔⒏淖?br>

簡(jiǎn)單雙向數(shù)據(jù)綁定

修飾符

  • .lazy:取代 imput 監(jiān)聽(tīng) change 事件账嚎。
  • .number:輸入字符串轉(zhuǎn)為數(shù)字莫瞬。
  • .trim:輸入去掉首尾空格。

2郭蕉、文本區(qū)域加入數(shù)據(jù)綁定

<h3>文本域</h3>
    <textarea cols="30" rows="10" v-model="message"></textarea>

//JS
var app=new Vue({
  el:'#app',
  data:{
       message:'hello Vue!'
  }
 })

輸出:


文本域

3疼邀、多選按鈕綁定一個(gè)值

<h3>多選框綁定一個(gè)值</h3>
<input type="checkbox" id="isTrue" v-model="isTrue">
<label for="isTrue">{{isTrue}}</label>
//JS
var app=new Vue({
  el:'#app',
  data:{
      isTrue: true
  }
 }

輸出:


多選框綁定

4、多選綁定一個(gè)數(shù)組

<h3>多選框綁定數(shù)組</h3>
<p>
  <input type="checkbox" id="Fang" value="Fang" v-model="webNames">
  <label for="isTrue">Fang</label>
  <input type="checkbox" id="Frank" value="Frank" v-model="webNames">
  <label for="isTrue">Frank</label>
  <input type="checkbox" id="Alice" value="Alice" v-model="webNames">
  <label for="isTrue">Alice</label>
</p>
 //JS
var app=new Vue({
  el:'#app',
  data:{
      webNames:[]
  }
 }

輸出:

多選框綁定數(shù)組

5召锈、單選按鈕綁定數(shù)據(jù)

<h3>單選框綁定</h3>
<p>
  <input type="radio" id="one" value="男" v-model="sex">
  <label for="one">男</label>
  <input type="radio" id="two" value="女" v-model="sex">
  <label for="one">女</label>
  <br>
  你選擇的性別是:{{sex}}
</p>
//JS
var app=new Vue({
  el:'#app',
  data:{
      sex:''
  }
 }

輸出:

單選按鈕綁定數(shù)據(jù)

五旁振、v-on事件監(jiān)聽(tīng)

兩種綁定方法:
- v-on:click
<button v-on:click="bonusPoint">加分</button>
- @click
<button @click="deduction">減分</button>

//html
<div id="app">
    本場(chǎng)比賽得分:{{count}} 
    <br/>
    <button v-on:click="bonusPoint">加分</button>
    <button @click="deduction">減分</button>
    
</div>

<script>
    var app=new Vue({
        el:'#app',
        data:{
            count:0
        },
        methods:{
          bonusPoint:function(){
            this.count++
          },
          deduction:function(){
            this.count--
          }
        }
    })
</script>

我們除了綁定click之外,我們還可以綁定其它事件涨岁,比如鍵盤(pán)回車(chē)事件v-on:keyup.enter,現(xiàn)在我們?cè)黾右粋€(gè)輸入框拐袜,然后綁定回車(chē)事件,回車(chē)后把文本框里的值加到我們的count上梢薪。
綁定事件寫(xiě)法:

<input type="text" v-on:keyup.enter="onEnter" v-model="secondCount">
//綁定到鍵盤(pán)上的回車(chē)鍵
//JS代碼
onEnter:function(){
     this.count=this.count+parseInt(this.secondCount);
}

可以根據(jù)鍵值表定義鍵盤(pán)事件:點(diǎn)擊查看

六蹬铺、v-bind指令

v-bind是處理HTML中的標(biāo)簽屬性的,例如<div></div>就是一個(gè)標(biāo)簽秉撇,<img>也是一個(gè)標(biāo)簽甜攀,我們綁定<img>上的src進(jìn)行動(dòng)態(tài)賦值。

//html
<div id="app">
[圖片上傳失敗...(image-c7ccbb-1524291892651)]
</div>
//js
var app=new Vue({
    el:'#app',
    data:{
          imgSrc:'http://baidu.com/wp-content/uploads/2017/02/vue01-2.jpg'
     }
})

在html中我們用v-bind:src=”imgSrc”的動(dòng)態(tài)綁定了src的值琐馆,這個(gè)值是在vue構(gòu)造器里的data屬性中找到的规阀。我們?cè)赿ata對(duì)象在中增加了imgSrc屬性來(lái)供html調(diào)用。

v-bind 縮寫(xiě)

<!-- 完整語(yǔ)法 -->
<a v-bind:href="url"></a>
<!-- 縮寫(xiě) -->
<a :href="url"></a>

綁定CSS樣式
在工作中我們經(jīng)常使用v-bind來(lái)綁定css樣式:
在綁定CSS樣式是瘦麸,綁定的值必須在vue中的data屬性中進(jìn)行聲明谁撼。
1、直接綁定class樣式

<div :class="className">1滋饲、綁定classA</div>
var app=new Vue({
    el:'#app',
    data:{
          className:'classA
     }

2彤敛、綁定classA并進(jìn)行判斷,在isOK為true時(shí)顯示樣式了赌,在isOk為false時(shí)不顯示樣式。

<div :class="{classA:isOk}">2玄糟、綁定class中的判斷</div>
  var app=new Vue({
    el:'#app',
    data:{
          isOK:false
     }

3勿她、綁定class中的數(shù)組

<div :class="[classA,classB]">3、綁定class中的數(shù)組</div>
 var app=new Vue({
    el:'#app',
    data:{
         classA:'classA',
          classB:'classB'
     }

4阵翎、綁定class中使用三元表達(dá)式判斷

<div :class="isOk?classA:classB">4逢并、綁定class中的三元表達(dá)式判斷</div>
var app=new Vue({
    el:'#app',
    data:{
         classA:'classA',
          classB:'classB'
     }

5之剧、綁定style

<div :style="{color:red,fontSize:font}">5、綁定style</div>
var app=new Vue({
    el:'#app',
    data:{
          red:'red',
          font:'20px'
     }

6砍聊、用對(duì)象綁定style樣式

<div :style="styleObject">6背稼、用對(duì)象綁定style樣式</div>
 //js
var app=new Vue({
   el:'#app',
   data:{
       styleObject:{
           fontSize:'24px',
           color:'green'
            }
        }
})

v-pre & v-cloak & v-once指令

v-pre指令
在模板中跳過(guò)vue的編譯,直接輸出原始值玻蝌。就是在標(biāo)簽中加入v-pre就不會(huì)輸出vue中的data值了蟹肘。

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

這時(shí)并不會(huì)輸出我們的message值,而是直接在網(wǎng)頁(yè)中顯示{{message}}

v-cloak指令
在vue渲染完指定的整個(gè)DOM后才進(jìn)行顯示俯树。它必須和CSS樣式一起使用帘腹,

[v-cloak] {
  display: none;
}
<div v-cloak>
  {{ message }}
</div>

v-once指令
在第一次DOM時(shí)進(jìn)行渲染,渲染完成后視為靜態(tài)內(nèi)容许饿,跳出以后的渲染過(guò)程阳欲。

<div v-once>{{message}}</div>
<div><input type="text" v-model="message"></div>
<div>{{message}}</div>

上面的div將不會(huì)隨著input值改變一起改變 只改變下面div

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陋率,隨后出現(xiàn)的幾起案子球化,更是在濱河造成了極大的恐慌,老刑警劉巖瓦糟,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筒愚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡狸页,警方通過(guò)查閱死者的電腦和手機(jī)锨能,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芍耘,“玉大人址遇,你說(shuō)我怎么就攤上這事≌海” “怎么了倔约?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坝初。 經(jīng)常有香客問(wèn)我浸剩,道長(zhǎng),這世上最難降的妖魔是什么鳄袍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任绢要,我火速辦了婚禮,結(jié)果婚禮上拗小,老公的妹妹穿的比我還像新娘重罪。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布剿配。 她就那樣靜靜地躺著搅幅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呼胚。 梳的紋絲不亂的頭發(fā)上茄唐,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蝇更,去河邊找鬼沪编。 笑死,一個(gè)胖子當(dāng)著我的面吹牛簿寂,可吹牛的內(nèi)容都是我干的胳泉。 我是一名探鬼主播袜匿,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼携取,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侥锦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起克胳,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤平绩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后漠另,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捏雌,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年笆搓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了性湿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡满败,死狀恐怖肤频,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情算墨,我是刑警寧澤宵荒,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站净嘀,受9級(jí)特大地震影響报咳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挖藏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一暑刃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膜眠,春花似錦岩臣、人聲如沸袁翁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至柄驻,卻和暖如春狐树,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸿脓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工抑钟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人野哭。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓在塔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親拨黔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛔溃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容