Vue的學(xué)習(xí)筆記-Day2-01(品牌列表案例的基礎(chǔ)部分)

品牌列表案例的基礎(chǔ)部分

<!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>
    <link rel="stylesheet" href="lib/bootstrap.css">
    <script src="lib/vue-2.6.10.js"></script>
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
</head>
<body>

<div id="app">
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">添加品牌</h3>
        </div>
        <div class="panel-body form-inline">
            <label>
                Id:
                <input type="text" class="form-control" v-model="id">
            </label>
            <label>
                Name:
                <input type="text" class="form-control" v-model="name" @keyup.enter="add">
                <!--按鍵修飾符-->
            </label>
            <!--在vue中募闲,使用事件綁定機(jī)制,為元素指定處理函數(shù)的時(shí)候找岖,如果加了小括號(hào)叶洞,就可以給函數(shù)傳參-->
            <input type="button" value="添加" class="btn btn-primary" @click="add">
            <label>
                搜索名稱(chēng)關(guān)鍵字:
                <!--在vue中所有的指令在調(diào)用的時(shí)候,都用v-開(kāi)頭-->
                <input type="text" class="form-control" v-model="keywords" v-focus v-color="'blue'">
            </label>
        </div>
    </div>

    <table class="table table-bordered table-hover table-striped">
        <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Ctime</th>
            <th>Operation</th>
        </tr>
        </thead>
        <tbody>
        <!--之前寸爆,v-for 中的數(shù)據(jù)礁鲁,都是從 data 上的list中直接渲染過(guò)來(lái)的-->
        <!--現(xiàn)在,我們自定義了一個(gè) search 方法赁豆,同時(shí)仅醇,把所有關(guān)鍵字,通過(guò)傳參的形式魔种,傳遞給了search 方法-->
        <!--在search方法內(nèi)部通過(guò)執(zhí)行for循環(huán)析二,把所有符合搜索關(guān)鍵字的數(shù)據(jù),保存在一個(gè)新數(shù)組中-->
        <tr v-for="item in search(keywords)" :key="item.id">
            <td>{{item.id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.ctime | dateFormat('yyyy-mm-dd')}}</td>
            <td>
                <a href="" @click.prevent="del(item.id)">刪除</a>
            </td>
        </tr>
        </tbody>
    </table>

</div>

<script>
    //全局過(guò)濾器节预,進(jìn)行時(shí)間的格式化
    Vue.filter('dateFormat', function (dateStr, pattern = '') {
        //根據(jù)給定的時(shí)間字符串叶摄,得到特定的時(shí)間
        var dt = new Date(dateStr);
        var y = dt.getFullYear();
        var m = (dt.getMonth() + 1).toString().padStart(2, '0');
        var d = dt.getDate().toString().padStart(2, '0');

        // return y + '-' + m + '-' + d;
        //上面的拼接方法過(guò)于繁瑣漆改,采用下面的模板字符串方法進(jìn)行拼接

        if (pattern.toLowerCase() === 'yyyy-mm-dd') {
            return `${y}-${m}-$2xw7fvx`;
        } else {
            var hh = dt.getHours().toString().padStart(2, '0');
            var mm = dt.getMinutes().toString().padStart(2, '0');
            var ss = dt.getSeconds().toString().padStart(2, '0');

            return `${y}-${m}-$n6fpl87 ${hh}:${mm}:${ss}`;
        }
    });

    //自定義全局指令
    //其中參數(shù)1是指令的名稱(chēng),注意准谚,在定義的時(shí)候挫剑,指令的前面不需要加v-前綴,但是在調(diào)用的時(shí)候柱衔,必須在指令名稱(chēng)前加上v-前綴
    //參數(shù)2是一個(gè)對(duì)象樊破,這個(gè)對(duì)象身上有一些指令相關(guān)的函數(shù),這些函數(shù)可以在特定的階段執(zhí)行相關(guān)的操作
    Vue.directive('focus', {
        bind: function (el) {//每當(dāng)指令綁定到元素上的時(shí)候唆铐,會(huì)立即執(zhí)行這個(gè)bind函數(shù)哲戚,只執(zhí)行一次
            // el.focus();
            /*在元素剛綁定了指令的時(shí)候,還沒(méi)有插入到dom中的時(shí)候艾岂,調(diào)用focus方法沒(méi)有作用顺少,因?yàn)橐粋€(gè)元素只有插入DOM之后才能獲取焦點(diǎn)*/
            /*注意,在每個(gè)函數(shù)中王浴,第一個(gè)參數(shù)脆炎,永遠(yuǎn)都是el,表示被綁定了指令的元素氓辣,是一個(gè)原聲的對(duì)象*/
        },
        inserted: function (el) {//inserted表示元素插入到Dom中的時(shí)候秒裕,會(huì)執(zhí)行此函數(shù),且只執(zhí)行一次
            /*和js行為有關(guān)的操作钞啸,最好在inserted中去執(zhí)行几蜻,防止js行為不生效*/
            el.focus();
        },
        updated: function (el) {//當(dāng)VNode更新的時(shí)候,會(huì)執(zhí)行 updated体斩,可能會(huì)觸發(fā)多次
        }

    });


    //自定義一個(gè)全局自動(dòng)設(shè)置顏色的指令
    Vue.directive('color', {
        //樣式只要通過(guò)指令綁定給了元素梭稚,不管這個(gè)元素有沒(méi)有被插入到頁(yè)面中去,這個(gè)元素肯定有了一個(gè)內(nèi)聯(lián)的樣式
        //將來(lái)元素肯定會(huì)顯示到頁(yè)面中去絮吵,這時(shí)候弧烤,瀏覽器的渲染引擎必然會(huì)解析樣式,應(yīng)用給這個(gè)元素
        bind: function (el, binding) {
            el.style.color = binding.value;
            /*和樣式相關(guān)的操作源武,一般都可以在bind中執(zhí)行*/
        }
    });

    //創(chuàng)建vue實(shí)例
    var vm = new Vue({
        el: '#app',
        data: {
            id: '',
            name: '',
            keywords: '',//搜索關(guān)鍵字
            list: [
                {id: 1, name: '奔馳', ctime: new Date()},
                {id: 2, name: '寶馬', ctime: new Date()},
            ]
        },
        methods: {
            add() {//添加的方法
                //分析
                //獲取 id 和 name 扼褪,直接從data中獲取
                //組織出一個(gè)對(duì)象
                //把這個(gè)對(duì)象,調(diào)用數(shù)組的相關(guān)方法粱栖,添加到當(dāng)前data中的list中
                //注意: 在vue中已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)的雙向綁定,每當(dāng)我們修改了data中的數(shù)據(jù)脏毯,vue會(huì)默認(rèn)監(jiān)聽(tīng)到數(shù)據(jù)改動(dòng)闹究,自動(dòng)把最新的數(shù)據(jù)應(yīng)用到頁(yè)面上

                var obj = {id: this.id, name: this.name, ctime: new Date()};
                this.list.push(obj);
                this.id = this.name = '';
            },
            del(id) {//根據(jù)id刪除數(shù)據(jù)
                //分析
                //如何根據(jù)id找到要?jiǎng)h除這一項(xiàng)的索引
                //如果找到索引直接調(diào)用數(shù)組的splice方法

                this.list.some((item, i) => {
                    if (item.id == id) {
                        //在數(shù)組的some方法中,如果return true 就會(huì)終止后續(xù)循環(huán)
                        this.list.splice(i, 1);
                        /*
                          array.splice(start,deleteCount,item1,item2...)
                          start: 開(kāi)始操作的索引
                          deleteCount:要移除的數(shù)組元素的個(gè)數(shù)
                          itemN:要添加進(jìn)數(shù)組的元素食店,如果不指定渣淤,則splice只刪除數(shù)組元素
                        */
                        return true;
                    }
                })
            },
            search(keywords) {//根據(jù)關(guān)鍵字進(jìn)行數(shù)據(jù)的搜索
                // var newList = [];
                // this.list.forEach(item => {
                //     if (item.name.indexOf(keywords) != -1) {
                //         newList.push(item)
                //     }
                // });
                // return newList;

                // 注意: forEach some filter findIndex 這些都屬于數(shù)組的新方法
                //都會(huì)對(duì)數(shù)組中的每一項(xiàng)赏寇,進(jìn)行遍歷,執(zhí)行相關(guān)的操作
                return this.list.filter(item => {
                    //注意: ES6中价认,為字符串提供了一個(gè)新方法梆砸,叫做 String.prototype.includes('要包含的字符串')
                    //如果包含拿霉,則返回true,否則返回false
                    return item.name.includes(keywords)
                })
            }
        }
    });
</script>

<!--過(guò)濾器的定義語(yǔ)法-->
<!--Vue.filter('過(guò)濾器名稱(chēng)',function(){})-->

<!--過(guò)濾器中的 function , 第一個(gè)參數(shù)已經(jīng)被規(guī)定死了盈魁,永遠(yuǎn)都是過(guò)濾器管道符前面?zhèn)鬟f過(guò)來(lái)的數(shù)據(jù)-->
<div id="app2">
    <!--可以有多個(gè)過(guò)濾器,按照從左到右的順序過(guò)濾惋鹅,將前面過(guò)濾的結(jié)果傳到后面的過(guò)濾器-->
    <p v-cloak>{{ msg | msgFormat('瘋狂','+1') | test }}</p>
</div>

<script>
    //定義一個(gè)Vue全局過(guò)濾器犁河,名字叫做 msgFormat
    //過(guò)濾器調(diào)用時(shí)候的格式  {{name | nameope}}
    Vue.filter('msgFormat', function (msg, arg, arg2) {
        //字符串的 replace方法,第一個(gè)參數(shù)惠奸,除了可寫(xiě)一個(gè) 字符串之外梅誓,還可以定義一個(gè)正則
        return msg.replace(/單純/g, arg + arg2);
    });

    Vue.filter('test', msg => {
        return msg + '========';
    });

    var vm = new Vue({
        el: '#app2',
        data: {
            msg: '我是一個(gè)單純的男孩,我曾以為我是最單純的佛南!'
        }
    })
</script>

<!--如何定義一個(gè)私有(局部)的過(guò)濾器-->
<!--過(guò)濾器調(diào)用的時(shí)候梗掰,采用的是就近原則,如果私有過(guò)濾器和全局過(guò)濾器名稱(chēng)一致嗅回,優(yōu)先到調(diào)用私有-->
<!--
var vm = Vue({
    el: '',
    data:{},
    methods:{},
    filters:{//定義私有過(guò)濾器愧怜,過(guò)濾器有兩個(gè)條件,【過(guò)濾器名稱(chēng) 和 處理函數(shù)】
        dateFormat: function(dataStr, pattern){
            //過(guò)濾的條件
        }
    },
})


-->

<!--如何定義一個(gè)私有(局部)的指令-->
<!--
var vm = Vue({
    el: '',
    data:{},
    methods:{},
    directives:{//自定義私有指令
        'fontWeight':{
            bind: function(el, binding){
                el.style.fontWeight = binding.value;
            }
        }
    }
})


-->

<script>
    /*自定義全局按鍵修飾符*/
    Vue.config.keyCodes.f2 = 113;
</script>

</body>
</html>


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妈拌,一起剝皮案震驚了整個(gè)濱河市拥坛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尘分,老刑警劉巖猜惋,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異培愁,居然都是意外死亡著摔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)定续,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谍咆,“玉大人,你說(shuō)我怎么就攤上這事私股∧〔欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵倡鲸,是天一觀的道長(zhǎng)供嚎。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么克滴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任逼争,我火速辦了婚禮,結(jié)果婚禮上劝赔,老公的妹妹穿的比我還像新娘誓焦。我一直安慰自己,他們只是感情好着帽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布杂伟。 她就那樣靜靜地躺著,像睡著了一般启摄。 火紅的嫁衣襯著肌膚如雪稿壁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天歉备,我揣著相機(jī)與錄音傅是,去河邊找鬼。 笑死蕾羊,一個(gè)胖子當(dāng)著我的面吹牛喧笔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龟再,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼书闸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了利凑?” 一聲冷哼從身側(cè)響起浆劲,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哀澈,沒(méi)想到半個(gè)月后牌借,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡割按,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年膨报,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片适荣。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡现柠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弛矛,到底是詐尸還是另有隱情够吩,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布汪诉,位于F島的核電站废恋,受9級(jí)特大地震影響谈秫,放射性物質(zhì)發(fā)生泄漏扒寄。R本人自食惡果不足惜鱼鼓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望该编。 院中可真熱鬧迄本,春花似錦、人聲如沸课竣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)于樟。三九已至公条,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迂曲,已是汗流浹背靶橱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留路捧,地道東北人关霸。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杰扫,于是被迫代替她去往敵國(guó)和親队寇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 每個(gè)月都有那么幾次說(shuō)不清的情緒,來(lái)的快去的也快凡伊,只消一個(gè)夜晚零渐,又是一個(gè)新的開(kāi)始。 今天的夜窗声!有點(diǎn)涼相恃,已經(jīng)要霜降了,...
    娶王子的將軍閱讀 370評(píng)論 1 4
  • 何穎穎堅(jiān)持讀書(shū)第323天 《建構(gòu)解決之道》第四章:焦點(diǎn)解決督導(dǎo)構(gòu)成要素的探討與應(yīng)用 第359—361頁(yè) 笨觅。
    何穎穎h閱讀 125評(píng)論 0 0
  • 夜 悄悄地來(lái)了拦耐, 喧囂的白日已徹底落下帷幕。 奔波勞碌中微感有些疲乏见剩, 腳兒重杀糯,身心乏,眼皮有些無(wú)力的在眨巴苍苞。 人...
    清幽勵(lì)志文苑閱讀 655評(píng)論 0 1
  • 追尋是個(gè)人的成長(zhǎng)固翰。 因?yàn)檫@才是一個(gè)人幸福的本質(zhì)原因狼纬。 不要有任何情緒,叫做成熟骂际。
    廈大平兄探險(xiǎn)記閱讀 201評(píng)論 0 0
  • 拿起這本書(shū)疗琉,首先沒(méi)有翻閱目錄而是被書(shū)的封面所吸引,“阿乙是一個(gè)了不起的作家歉铝,平靜但是犀利盈简,像是一個(gè)見(jiàn)慣了大...
    15劉思怡閱讀 428評(píng)論 0 1