vue框架加深

1. vue事件修飾符

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

        <style type="text/css">
            #div1{
                width: 400px;
                height: 400px;
                
                background-color: red;
            }
            
            #div2{
                width: 200px;
                height: 200px;
                
                background-color: green;
            }
            
            #div3{
                width: 100px;
                height: 100px;
                
                background-color: yellow;
            }
        </style>
    </head>
    <body>
        
        <!--1.stop修飾符
            v-on:事件名.stop  - 捕獲指定標(biāo)簽上的指定事件(阻止事件傳遞給父標(biāo)簽)
        -->
        <!--<div id="div1" v-on:click.stop="action1">
            <div id="div2" v-on:click.stop="action2">
                <div id="div3" v-on:click.stop="action3">
                    
                </div>
            </div>
        </div>
        
        <script type="text/javascript">
            
            var app1 = new Vue({
                el:'#div1',
                methods:{
                    action1:function(){
                        alert('div1被點(diǎn)擊')
                    },
                    action2:function(){
                        alert('div2被點(diǎn)擊')
                    },
                    action3:function(){
                        alert('div3被點(diǎn)擊')
                    }
                }
            })
            
        </script>-->
        
        <!--2.表單提交阻止頁面重載
            在form標(biāo)簽中設(shè)置: v-on:submit.prevent='方法屬性名'
        -->
        <!--<form action="" method="get" id="app-2" v-on:submit.prevent="submitAction">
            <input type="" name="username" id="" value="" />
            <input type="password" name="password" id="" value="" />
            <input type="radio" name="sex" id="" value="" />男
            <input type="radio" name="sex" id="" value="" />女
            <input type="submit" value="提交"/>
        </form>
        <script type="text/javascript">
            var app2 = new Vue({
                el:'#app-2',
                methods:{
                    submitAction:function(){
                        alert('已經(jīng)提交')
                    }
                }
            })
        </script>-->
        
        <div id="app-3">
            <p v-for="goods in goodslist">{{goods}}</p>
        </div>
        <script type="text/javascript">
            var datalist = {'goodslist':[
                        '元素1','元素2', '元素3', '元素4'
                    ]}
            var app3 = new Vue({
                el:'#app-3',
                data:datalist
            })
        </script>
        
        
    </body>
</html>

2. vue加載異步數(shù)據(jù)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app-1">
            <h1>{{name}}</h1>
            <p v-for="data in datalist" v-if="datalist">{{data.title}}</p>
            
        </div>
        
        
        <!--1.將請(qǐng)求到的數(shù)據(jù)通過Vue加載到網(wǎng)頁中
            1)
        -->
        <script type="text/javascript">
            //0)創(chuàng)建Vue對(duì)象
            var app1 = new Vue({
                el:'#app-1',
                data: {
                    datalist: [],
                    name: 'abc'
                }
            })
            
            
            //1)通過接口請(qǐng)求
            $.ajax({
                type:"get",
                url:"http://rap2api.taobao.org/app/mock/177073/houseList",
                async:true,
                success:function(result){
                    //2)數(shù)據(jù)請(qǐng)求成功將請(qǐng)求到的數(shù)據(jù)關(guān)聯(lián)到Vue對(duì)象
                    console.log(result)
                    app1.datalist = result.datalist
                
                }
            });
        </script>
        
    </body>
</html>

3. 購物車

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <link rel="stylesheet" type="text/css" href="css/購物車.css"/>
    </head>
    <body>
        <div id="app-1">
            <table border="0" cellspacing="1" bgcolor="#000000">
            <!--表頭-->
                <tr class="header">
                    <td class="td1"><input type="checkbox" name="" id="check-all" value="" /><label for="check-all">全選</label></td>
                    <td class="td2">商品</td>
                    <td class="td3">單價(jià)</td>
                    <td class="td4">數(shù)量</td>
                    <td class="td5">小計(jì)</td>
                    <td class="td6">操作</td>
                </tr>
                
                <!--商品內(nèi)容-->
                <tr v-for="goods in goodsData" class="content" v-if="goods.count>0">
                    <!--商品第一列-->
                    <td class="ctd1"><input type="checkbox" name="" id="" value="" /></td>
                    <!--商品圖片和名字-->
                    <td class="box1">
                        <div class="box2">
                            <img v-bind:class="imageClass" v-bind:src="goods.image"/>
                            
                            <p class="title">{{goods.title}}</p>
                        </div>
                    </td>
                    
                    <!--單價(jià)-->
                    <td class="center">
                        {{goods.price}}
                    </td>
                    
                    <!--數(shù)量-->
                    <td class="center">
                        <button v-on:click="goods.count -= 1; if(goods.count<1){goods.count=1}">-</button>
                        <input type="" name="" class="count" v-model="goods.count" />
                        <button v-on:click="goods.count += 1">+</button>
                    </td>
                    
                    <!--總計(jì)-->
                    <td class="center">
                        {{goods.price*goods.count}}
                    </td>
                    <td class="center">
                        <button v-on:click="goods.count=0">刪除</button>
                    </td>
                </tr>
            </table>
        </div>
        
        
        
        <!--請(qǐng)求數(shù)據(jù)-->
        <script type="text/javascript">
            var app = new Vue({
                el:'#app-1',
                data:{
                    goodsData:[],
                    imageClass:'image'
                }
            })
            $.ajax({
                type:"get",
                url:"http://rap2api.taobao.org/app/mock/177073/getGoodsList",
                async:true,
                success:function(result){
                    app.goodsData = result.goodsData
                    console.log(result.goodsData)
                }
            });
        </script>
    </body>
</html>

4. 購物車的數(shù)據(jù)雙向綁定

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

    </head>
    <body>
        <div id="app-1">
            <!--全選按鈕-->
            <input type="checkbox" name="" id="" value="" v-on:change="checkedAll"/>全選<br />
            
            <div id="" v-for="goods in dataList" v-if="goods.count > 0">
                <!--單選-->
                <input v-bind:checked="checked" type="checkbox" name="" id="" value="" v-on:change="if(goods.isChecked==0){goods.isChecked=1}else{goods.isChecked=0}" />
                
                <!--商品名和價(jià)格-->
                <font>{{goods.name}}</font>
                <font>{{goods.price}}</font><br />
                
                <!--減商品數(shù)量-->
                <button v-on:click="goods.count--;if(goods.count < 1){goods.count=1}">-</button>
                <input type="" name="" id="" v-model="goods.count" />
                <!--加商品數(shù)量-->
                <button v-on:click="goods.count++; if(goods.count > 10){goods.count=10}">+</button><br />
                
                <!--總計(jì)-->
                <font>{{goods.price*goods.count}}</font><br />
                
                <!--刪除-->
                <button v-on:click="goods.count=0">刪除</button>
                
                <br /> <br />
                
                <p>總價(jià):{{total}} </p>
                
            </div>
        </div>
        
        <script type="text/javascript">
            var app = new Vue({
                el:'#app-1',
                data:{
                    dataList:[
                        {name:'蘋果',price:120, count:2, isChecked:0},
                        {name:'大米',price:60, count:3,  isChecked:0},
                        {name:'衣服',price:220, count:1, isChecked:0},
                        {name:'鞋子',price:300, count:1, isChecked:0}
                    ],
                    checked: ''
                },
                computed:{
                    //計(jì)算總價(jià)
                    total: function(){
                        return this.dataList.reduce(function(to, item){
                            return to+item.price*item.count*item.isChecked
                        },0)
                        
                    }
                },
                methods:{
                    //全選事件
                    checkedAll:function(){
                        if(this.checked == ''){
                            this.checked = 'checked'
                            this.dataList.forEach(function(item,x,arr){
                                item.isChecked = 1
                            })
                        }else{
                            this.checked = ''
                            this.dataList.forEach(function(item,x,arr){
                                item.isChecked = 0
                            })
                        }
                    }
                }
            })
        </script>
    </body>
</html>

5. vue計(jì)算屬性

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p>{{message}}</p>
            <p>{{reverse}}</p>
        </div>
        <script type="text/javascript">
            /*
             1)求數(shù)組中元素的和: 針對(duì)純數(shù)字?jǐn)?shù)字
             數(shù)組.reduce(function(參數(shù)1,參數(shù)2){
                    return 參數(shù)1+參數(shù)2
             })   -- 參數(shù)1的默認(rèn)是數(shù)組的第一個(gè)元素忙芒,參數(shù)2是數(shù)組中的元素
             
             2)求數(shù)組中對(duì)象的某個(gè)屬性的和
             數(shù)組.reduce(function(參數(shù)1,參數(shù)2){
                    return 參數(shù)1+參數(shù)2.屬性
             },默認(rèn)值)  -- 參數(shù)1的值是默認(rèn)值宽堆,參數(shù)2是數(shù)組中的元素
             
             */
            //求每個(gè)元素的和
            var numbers = [1, 2, 3, 4, 5]
            reslut = numbers.reduce(function(total, item){
                return total + item
            })
            console.log(reslut)
            
            
            //求元素中對(duì)象屬性的和
            var numbers2 = [
                {price: 1, count:23},
                {price: 10, count:10},
                {price: 20, count:4},
            ]
            reslut2 = numbers2.reduce(function(total, item){
                return total + (item.price*item.count)
            },0)
            console.log('總價(jià):',reslut2)
            
            
            var app = new Vue({
                el:'#app',
                data:{
                    message: 'Hello Vue'
                },
                //計(jì)算屬性
                computed:{
                    reverse: function(){
                        return this.message.split('').reverse().join('')
                    }
                }
                
            })
        </script>
    </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摔敛,隨后出現(xiàn)的幾起案子柜与,更是在濱河造成了極大的恐慌,老刑警劉巖惹想,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異督函,居然都是意外死亡嘀粱,警方通過查閱死者的電腦和手機(jī)激挪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锋叨,“玉大人垄分,你說我怎么就攤上這事⊥藁牵” “怎么了锋喜?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長豌鸡。 經(jīng)常有香客問我,道長段标,這世上最難降的妖魔是什么涯冠? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮逼庞,結(jié)果婚禮上蛇更,老公的妹妹穿的比我還像新娘。我一直安慰自己赛糟,他們只是感情好派任,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著璧南,像睡著了一般掌逛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上司倚,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天豆混,我揣著相機(jī)與錄音,去河邊找鬼动知。 笑死皿伺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盒粮。 我是一名探鬼主播鸵鸥,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼丹皱!你這毒婦竟也來了妒穴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤种呐,失蹤者是張志新(化名)和其女友劉穎宰翅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爽室,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汁讼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年淆攻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘿架。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓶珊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耸彪,到底是詐尸還是另有隱情伞芹,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布蝉娜,位于F島的核電站唱较,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏召川。R本人自食惡果不足惜南缓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荧呐。 院中可真熱鬧汉形,春花似錦、人聲如沸倍阐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峰搪。三九已至走孽,卻和暖如春鞋拟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工濒蒋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留它褪,地道東北人健无。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓苛让,卻偏偏與公主長得像,于是被迫代替她去往敵國和親春锋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矫膨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • vue概述 在官方文檔中,有一句話對(duì)Vue的定位說的很明確:Vue.js 的核心是一個(gè)允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,227評(píng)論 0 25
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,103評(píng)論 1 32
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容期奔,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容侧馅。關(guān)于...
    云之外閱讀 5,050評(píng)論 0 29
  • 一、了解Vue.js 1.1.1 Vue.js是什么呐萌? 簡單小巧馁痴、漸進(jìn)式、功能強(qiáng)大的技術(shù)棧 1.1.2 為什么學(xué)習(xí)...
    蔡華鵬閱讀 3,325評(píng)論 0 3
  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實(shí)用庫 服務(wù)端 輔助工具 應(yīng)用實(shí)例 Demo示例 element★...
    嘗了又嘗閱讀 1,154評(píng)論 0 1