【復(fù)習(xí)】VueJS之內(nèi)部指令

Vuejs

源碼:https://github.com/zhuangZhou/vuejs

下載Vue.js

官網(wǎng):http://vuejs.org

live-server使用

live-server是一個簡單的服務(wù)器佩番,具有熱更新

使用npm進行全局安裝

npm install -g live-server

在項目目錄中啟動

liver-server

內(nèi)部指令

v-if & v-else & v-show

1寒跳、v-if

v-if 用來判斷是否在加載HTML的DOM,比如模擬用戶登錄

<div v-if="isLogin">你好梳庆,XXX</div>
<div v-else>請登錄</div>

在Vue里的data定義isLogin的值舱卡,當(dāng)為true時赢笨,顯示“你好盾戴,XXX”,當(dāng)為false時楚堤,顯示“請登錄”逾雄。

2、v-show

v-show是通過調(diào)整css的display屬性的屬性值品追,來顯示和隱藏節(jié)點玄括,其實在HTML渲染時,已經(jīng)加載了DOM肉瓦;

<div v-show="isLogin">哈哈哈</div>

當(dāng)isLogin為true時遭京,顯示“哈哈哈”,當(dāng)為false時泞莉,隱藏哪雕。

3、兩者的區(qū)別

v-if:判斷是否加載鲫趁,可以減輕服務(wù)器壓力斯嚎,當(dāng)需要時在加載

v-show:調(diào)整css dispaly屬性,可以使客戶端操作更加流暢挨厚。

v-for

1堡僻、 v-for

v-for是用來循環(huán)data中的數(shù)組,來解析重復(fù)模板疫剃;

2钉疫、 基本用法
模板:

<ul>
    <li v-for="(item,index) in list">
       {{index}} - {{item}}
    </li>
</ul>

js:

var vm = new Vue({
    ...
    data(){
        return{
            list: [20, 23, 18, 65, 32, 19, 5, 56, 41]
        }
    }
});

模板中的使用形式是v-for="(item,index) in list" ,其中l(wèi)ist是源數(shù)據(jù)數(shù)組巢价,即js中data的list數(shù)組牲阁,item是數(shù)組元素迭代的別名(可以隨便起),index是數(shù)組元素的索引蹄溉,可以省略寫成v-for="item in list";

3、排序

使用排序您炉,我們需要使用computed屬性柒爵,在computed里面,重新聲明一個sortList對象赚爵,為什么要重新聲明棉胀,是為了不污染源數(shù)據(jù)法瑟。

var vm = new Vue({
    ...
    computed:{
        sortList(){
            var list = [];
            for(var i =0;i<this.list.length;i++){
                list.push(this.list[i]);
            }

            return list.sort(sortNumber);
        }
    }
})

function sortNumber(a,b){
    return a-b;
}

4、對象循環(huán)輸出

在實際項目中唁奢,我們使用的最多的就是對象的循環(huán)輸出霎挟,那如何輸出呢?

首先麻掸,在js中定義一個對象數(shù)組:

var vm =  new Vue({
    ...
    data(){
        return{
            person:[
                {
                    name: 'xhz',
                    age: 22
                },
                {
                    name: 'qws',
                    age: 34
                },
                {
                    name: 'asd',
                    age: 12
                },
                {
                    name: 'xdc',
                    age: 23
                }
            ]
        }
    }
})

然后酥夭,在模板中輸出

 <ul>
    <li v-for="(p,index) in person">
        {{index+1}} - {{p.name}} - {{p.age}}
    </li>
</ul>

對象的排序函數(shù):

function sortByKey(arr,key){
    return array.sort(function (a, b) {
        var x = a[key];
        var y = b[key];
        return ((x<y)?-1:((x>y)?1:0));
    })
}

v-text & v-html

前面我們使用插值表達式(即{{XXX}})在HTML中輸出data,當(dāng)網(wǎng)速比較慢或者加載javascript出錯時脊奋,會出現(xiàn)一個很大的弊端熬北,即暴露我們的{{XXX}};因此诚隙,Vue給我們提供v-text指令來解決這一問題:

<div v-text="text"></div>

當(dāng)數(shù)據(jù)里需要解析HTML標(biāo)簽的時候讶隐,v-text是無法輸出的,因此久又,Vue還給我們提供了一個指令:v-html

 <div v-html="html"></div>

需要注意的是:在生產(chǎn)環(huán)境中動態(tài)渲染HTML是非常危險的巫延,因為容易導(dǎo)致XSS攻擊。所以只能在可信的內(nèi)容上使用v-html地消,永遠不要在用戶提交和可操作的網(wǎng)頁上使用炉峰。

v-on

v-on是用來綁定監(jiān)聽事件的,可以監(jiān)聽DOM觸發(fā)的一些javascript代碼犯建;

<button v-on:click="add">add</button>
<button @click="add">add</button>

上面的兩行代碼是一個意思讲冠,@click是v-on:click的簡寫;

當(dāng)然适瓦,除了綁定click事件竿开,其他的事件也可以綁定,比如change事件玻熙,focu事件否彩,鍵盤事件,下面來說說鍵盤事件:

<input type="text" @key.enter="onKey">

代碼的意思是嗦随,當(dāng)按下"enter"鍵時列荔,觸發(fā)onkey事件;也可以使用鍵值:

<input type="text" @key.13="onKey">

v-model

v-model綁定數(shù)據(jù)源枚尼。就是把數(shù)據(jù)綁定在特定的表單元素上贴浙,可以很容易的實現(xiàn)雙向數(shù)據(jù)綁定。

1署恍、雙向數(shù)據(jù)綁定

模板:

 <div id="app">
    <p>原始文本信息:{{inputValue}}</p>
    <h3>文本框</h3>
    <p>v-model:<input type="text" v-model="inputValue"></p>
</div>

js:

var vm = new Vue({
    ...
    data(){
        return{
            inputValue:'Hello World!'
        }
    }
})

2崎溃、 修飾符

  • lazy:取代 imput 監(jiān)聽 change 事件。

  • number:輸入字符串轉(zhuǎn)為數(shù)字盯质。

  • trim:輸入去掉首尾空格袁串。

    <p>v-model.lazy:<input type="text" v-model.lazy="inputValue"></p>
    <p>v-model.number:<input type="text" v-model.number="inputValue"></p>
    <p>v-model.trim:<input type="text" v-model.trim="inputValue"></p>
    
    
    

3概而、文本區(qū)域加入數(shù)據(jù)綁定

<textarea rows="10" cols="30" v-model="inputValue"></textarea>

4、多選按鈕綁定一個值

<input type="checkbox" id="checkTrue" v-model="isFlag"><label for="checkTrue">{{isFlag}}</label>

5囱修、多選綁定一個數(shù)組

<p>
    <input type="checkbox" name="zz" id="zz" value="zz" v-model="names">
    <label for="zz">zz</label>
    <input type="checkbox" name="yym" id="yym" value="yym" v-model="names">
    <label for="yym">yym</label>
    <input type="checkbox" name="zxr" id="zxr" value="zxr" v-model="names">
    <label for="zxr">zxr</label>
</p>

6赎瑰、單選按鈕綁定數(shù)據(jù)

<p>
    <input type="radio" name="1" id="man" value="男" v-model="sex">
    <label for="man">男</label>
    <input type="radio" name="0" id="woman" value="女" v-model="sex">
    <label for="woman">女</label>
</p>

v-bind

v-bind是處理HTML中的標(biāo)簽屬性的,例如<div></div>就是一個標(biāo)簽破镰,<img>也是一個標(biāo)簽餐曼,我們綁定<img>上的src進行動態(tài)賦值。

模板:

<h3>綁定圖片地址</h3>
<p>![](imgSrc)</p>
<p>![](imgSrc)</p>

上面兩行代碼是一個意思啤咽,v-bind:src是完整語法晋辆,:src是簡寫;

js:

var vm = new Vue({
    ...
    data(){
        return{
            imgSrc:"https://www.baidu.com/img/qixi_pc_f35fe4b00cc1d200aea7cf9f86ae5dae.gif",

        }
    }
});

當(dāng)然宇整,除了綁定圖片地址瓶佳,還可以綁定<a></a>標(biāo)簽的href屬性:

<a :href="url"></a>

在工作中我們經(jīng)常使用v-bind來綁定css樣式:

在綁定CSS樣式是,綁定的值必須在vue中的data屬性中進行聲明鳞青。

1霸饲、直接綁定class樣式

 <p><span :class="className">1、綁定class</span></p>

2臂拓、綁定classA并進行判斷厚脉,在isOK為true時顯示樣式,在isOk為false時不顯示樣式胶惰。

<p>
    <span :class="{classA:isOK}">2傻工、綁定class判斷</span>
    <input type="checkbox"  id="isOK" v-model="isOK">
    <label for="isOK">isOK:{{isOK}}</label>
</p>

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

<p><span :class="[classA,classB]">3孵滞、綁定class數(shù)組</span></p>

4中捆、綁定class中使用三元表達式判斷

<p><span :class="isOK?classA:classB">4、綁定class三元運算符</span></p>

5坊饶、綁定style

<p><span :style="{color:red,fontSize:font}">1泄伪、綁定style</span></p>

6、用對象綁定style樣式

 <p><span :style="styleObj">2匿级、對象綁定style</span></p>


var vm = new Vue({
    el: '#app',
    data() {
        return {
            imgSrc: "https://www.baidu.com/img/qixi_pc_f35fe4b00cc1d200aea7cf9f86ae5dae.gif",
            url: 'http://www.baidu.com',
            className:'classA',
            classA:'classA',
            classB:'classB',
            isOK:false,
            red:'green',
            font:'26px',
            styleObj:{
                color:'red',
                fontSize:'30px'
            }
        }
    }
})

v-pre & v-cloak & v-once

1蟋滴、v-pre

在模板中跳過vue的編譯,直接輸出原始值痘绎。就是在標(biāo)簽中加入v-pre就不會輸出vue中的data值了津函。

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

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

2孤页、v-cloak

在vue渲染完指定的整個DOM后才進行顯示尔苦。它必須和CSS樣式一起使用,

[v-cloak] {
    display: none;
}


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

3、v-once

在第一次DOM時進行渲染蕉堰,渲染完成后視為靜態(tài)內(nèi)容,跳出以后的渲染過程悲龟。

<div>
    <input type="text" v-model="msg">
    <p v-once>{{msg}}</p>
    <p>{{msg}}</p>
</div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屋讶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子须教,更是在濱河造成了極大的恐慌皿渗,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轻腺,死亡現(xiàn)場離奇詭異乐疆,居然都是意外死亡,警方通過查閱死者的電腦和手機贬养,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門挤土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人误算,你說我怎么就攤上這事仰美。” “怎么了儿礼?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵咖杂,是天一觀的道長。 經(jīng)常有香客問我蚊夫,道長诉字,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任知纷,我火速辦了婚禮壤圃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屈扎。我一直安慰自己埃唯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布鹰晨。 她就那樣靜靜地躺著墨叛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪模蜡。 梳的紋絲不亂的頭發(fā)上漠趁,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音忍疾,去河邊找鬼闯传。 笑死,一個胖子當(dāng)著我的面吹牛卤妒,可吹牛的內(nèi)容都是我干的甥绿。 我是一名探鬼主播字币,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼共缕!你這毒婦竟也來了洗出?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤图谷,失蹤者是張志新(化名)和其女友劉穎翩活,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體便贵,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡菠镇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了承璃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片利耍。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盔粹,靈堂內(nèi)的尸體忽然破棺而出堂竟,到底是詐尸還是另有隱情,我是刑警寧澤玻佩,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布出嘹,位于F島的核電站,受9級特大地震影響咬崔,放射性物質(zhì)發(fā)生泄漏税稼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一垮斯、第九天 我趴在偏房一處隱蔽的房頂上張望郎仆。 院中可真熱鬧,春花似錦兜蠕、人聲如沸扰肌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曙旭。三九已至,卻和暖如春晶府,著一層夾襖步出監(jiān)牢的瞬間桂躏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工川陆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剂习,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像鳞绕,于是被迫代替她去往敵國和親失仁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容们何,還有我對于 Vue 1.0 印象不深的內(nèi)容陶因。關(guān)于...
    云之外閱讀 5,045評論 0 29
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量垂蜗,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 10,995評論 4 129
  • 今年的國慶解幽,重新開始炒菜做飯贴见,這是搬家后第一次在鍋臺灶邊炒菜,之前就是熬煮點粥之類的躲株,一是因為工作忙碌片部,二是嫌麻煩...
    方原閱讀 306評論 0 0
  • 大家都知道棗類都蘊含著豐富的營養(yǎng)成分,而今天我們所要說的主角則是不少朋友都熟悉的優(yōu)質(zhì)水果——冬棗霜定〉涤疲可以說冬棗被大家...
    執(zhí)筆青衫閱讀 749評論 0 0
  • (連載)《美夢如璇·第二章·第十一節(jié)》 下 我不是在尋找捷徑,也不是要窺探秘密望浩,只是想辖所,更好的定位自己,定位你在我...
    葉子程閱讀 325評論 2 1