Vue的學(xué)習(xí)筆記-Day1-02(跑馬燈效果、事件修飾符张漂、v-model晶默、簡易計(jì)算器)

一、制作跑馬燈效果

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/vue-2.6.10.js"></script>
</head>
<body>

<!--創(chuàng)建一個(gè)要控制的區(qū)域-->
<div id="app">
    <input type="button" value="浪起來" @click="lang">
    <input type="button" value="低調(diào)" @click="stop">

    <h4>{{msg}}</h4>
</div>

<script>
    //注意: 在vm實(shí)例中航攒,如果想要獲取data上的數(shù)據(jù)磺陡,或者想要調(diào)用methods中的方法,必須通過this.數(shù)據(jù)屬性名漠畜,或者this.方法名來訪問币他,這里的this就表示我們new出來的VM實(shí)例對(duì)象
    var vm = new Vue({
        el: '#app',
        data: {
            msg: '猥瑣發(fā)育,別浪~~憔狞!',
            intervalId: null //在data上定義定時(shí)器id
        },
        methods: {
            lang() {
                //箭頭函數(shù)使內(nèi)部的this指向與外部一致蝴悉,普通函數(shù)的this指針會(huì)指向自身,與外部的this不一致瘾敢。
                //防止創(chuàng)建多個(gè)計(jì)時(shí)器                
                if (this.intervalId == null) {
                    this.intervalId = setInterval(() => {
                        //獲取到第一個(gè)字符
                        var start = this.msg.substring(0, 1);
                        //獲取到后面的所有字符
                        var end = this.msg.substring(1);
                        //重新拼接得到新的字符串拍冠,并賦值給this.msg
                        this.msg = end + start;
                    }, 400);
                }

                //注意: VM實(shí)例會(huì)監(jiān)聽自己身上的data中的所有數(shù)據(jù)的改變,只要數(shù)據(jù)已發(fā)生變化廉丽,就會(huì)自動(dòng)把最新的數(shù)據(jù)從data中同步到頁面上倦微。
            },
            stop() {
                clearInterval(this.intervalId);
                //每當(dāng)清除了計(jì)時(shí)器妻味,需要重新把intervalId賦值為null
                this.intervalId = null;
            }
        }
    })

    //分析
    //1.給【浪起來】按鈕綁定一個(gè)點(diǎn)擊事件 v-on  @
    //2.在按鈕的事件處理函數(shù)中正压,寫相關(guān)的業(yè)務(wù)邏輯代碼:拿到msg字符串,然后 調(diào)用字符串的substring 來進(jìn)行字符串的截取操作责球,把第一個(gè)字符截取出來放到最后一個(gè)位置即可
    //3.為了實(shí)現(xiàn)點(diǎn)擊一下按鈕自動(dòng)截取的功能焦履,需要吧2步驟中的代碼放到計(jì)時(shí)器中
</script>
</body>
</html>

二、事件修飾符

<script src="lib/vue-2.6.10.js"></script>
    <style>
        .inner {
            height: 150px;
            background-color: darkcyan;
        }
    </style>

<div id="app">
    <div class="inner" @click="divHandler">
        <!--使用.stop阻止冒泡-->
        <input type="button" value="戳他1" @click.stop="btnHandler">
    </div>
    <div class="inner" @click.capture="divHandler">
        <!--使用.capture可實(shí)現(xiàn)捕獲機(jī)制雏逾,即點(diǎn)擊按鈕時(shí)先觸發(fā)外層div的點(diǎn)擊事件再觸發(fā)按鈕的點(diǎn)擊事件-->
        <input type="button" value="戳他2" @click="btnHandler">
    </div>
    <div class="inner" @click.self="divHandler">
        <!--使用.self實(shí)現(xiàn)只有點(diǎn)擊當(dāng)前元素時(shí)嘉裤,才會(huì)觸發(fā)時(shí)間處理函數(shù)-->
        <!--注意:.self只會(huì)阻止自己身上冒泡行為的觸發(fā),并不會(huì)真正阻止冒泡的發(fā)生栖博。若有多層嵌套事件時(shí)阻止冒泡用.self的話就要給每一個(gè)父級(jí)添加屑宠,而.stop只添加一次即可-->
        <input type="button" value="戳他3" @click="btnHandler">
    </div>
    <!--使用.prevent阻止默認(rèn)行為-->
    <a  @click.prevent="linkClick">有問題,先去百度1</a>
    <!--使用.once 只觸發(fā)一次事件處理函數(shù)仇让,而且阻止默認(rèn)事件機(jī)制也執(zhí)行一次-->
    <a  @click.prevent.once="linkClick">有問題典奉,先去百度2</a>
</div>

<script>
    //創(chuàng)建一個(gè)Vue實(shí)例,得到ViewModel
    var vm = new Vue({
        el: '#app',
        data: {},
        methods: {
            divHandler() {
                console.log("這是觸發(fā)了 inner div 的點(diǎn)擊事件");
            },
            btnHandler() {
                console.log("這是觸發(fā)了 btn 按鈕 的點(diǎn)擊事件");
            },
            linkClick(){
                console.log("觸發(fā)了鏈接的點(diǎn)擊事件");
            }
        }
    })
</script>

三丧叽、使用v-model實(shí)現(xiàn)雙向數(shù)據(jù)綁定

<script src="lib/vue-2.6.10.js"></script>
<div id="app">
    <h4>{{msg}}</h4>
    <!--v-bind只能實(shí)現(xiàn)數(shù)據(jù)的單項(xiàng)綁定卫玖,從M(數(shù)據(jù)層)自動(dòng)綁定到V(視圖層)中,無法實(shí)現(xiàn)數(shù)據(jù)的雙向綁定-->
    <input type="text" :value="msg">
    <!--使用v-model可以實(shí)現(xiàn)數(shù)據(jù)表單元素和Model中數(shù)據(jù)的雙向數(shù)據(jù)綁定-->
    <!--注意:v-model只能運(yùn)用在表單元素中-->
    <!-- input(radio,text,address,email...) select checkbox textarea-->
    <input type="text" v-model="msg">
</div>

<script>
    //創(chuàng)建Vue實(shí)例
    var vm = new Vue({
        el: '#app',
        data: {
            msg: '大家都是好學(xué)生'
        }
    })
</script>

四踊淳、簡易計(jì)算器

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="lib/vue-2.6.10.js"></script>
</head>
<body>

<div id="app">
    <input type="text" v-model="n1">

    <select v-model="opt">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>

    <input type="text" v-model="n2">

    <input type="button" value="=" @click="calc">

    <input type="text" v-model="result">
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            n1: 0,
            n2: 0,
            result: 0,
            opt: '+'
        },
        methods: {
            calc() {//計(jì)算器計(jì)算方法
                var codeStr = 'parseFloat(this.n1)' + this.opt + 'parseFloat(this.n2)';
                this.result = eval(codeStr);
            }
        }
    })
</script>

</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末假瞬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脱茉,老刑警劉巖剪芥,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琴许,居然都是意外死亡粗俱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門虚吟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寸认,“玉大人,你說我怎么就攤上這事串慰∑” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵邦鲫,是天一觀的道長灸叼。 經(jīng)常有香客問我,道長庆捺,這世上最難降的妖魔是什么古今? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮滔以,結(jié)果婚禮上捉腥,老公的妹妹穿的比我還像新娘。我一直安慰自己你画,他們只是感情好抵碟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坏匪,像睡著了一般拟逮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上适滓,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天敦迄,我揣著相機(jī)與錄音,去河邊找鬼凭迹。 笑死罚屋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕊苗。 我是一名探鬼主播沿后,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼朽砰!你這毒婦竟也來了尖滚?” 一聲冷哼從身側(cè)響起喉刘,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漆弄,沒想到半個(gè)月后睦裳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撼唾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年廉邑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倒谷。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛛蒙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渤愁,到底是詐尸還是另有隱情牵祟,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布抖格,位于F島的核電站诺苹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雹拄。R本人自食惡果不足惜收奔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滓玖。 院中可真熱鬧坪哄,春花似錦、人聲如沸呢撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殊霞。三九已至,卻和暖如春汰蓉,著一層夾襖步出監(jiān)牢的瞬間绷蹲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工顾孽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祝钢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓若厚,卻偏偏與公主長得像拦英,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子测秸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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