Vue.js 第一課

01. Vue.JS 第一課 02:51

Vue 1.0.21 Sublime Text

1 知牌、vue:

讀音: v-u-e
view

2俐银、vue到底是什么?

一個(gè)mvvm框架(庫)羔沙、和angular類似
比較容易上手、小巧
mvc:

  • mvp
  • mvvm
  • mv*
  • mvx

3凝赛、網(wǎng)址:

官網(wǎng):http://cn.vuejs.org/
手冊(cè): http://cn.vuejs.org/api/

4袖迎、vue和angular區(qū)別?

共同點(diǎn): 不兼容低版本IE

vue——簡(jiǎn)單、易學(xué)

指令以 v-xxx
一片html代碼配合上json余蟹,再new出來vue實(shí)例
個(gè)人維護(hù)項(xiàng)目

適合: 移動(dòng)端項(xiàng)目,小巧

vue的發(fā)展勢(shì)頭很猛卷胯,github上start數(shù)量已經(jīng)超越angular

angular——上手難

指令以 ng-xxx
所有屬性和方法都掛到$scope身上
angular由google維護(hù)
    
合適: pc端項(xiàng)目

5、vue基本雛形:

angular展示一條基本數(shù)據(jù):

var app=angular.module('app',[]);

app.controller('xxx',function($scope){  //C
    $scope.msg='welcome'
})

html:
div ng-controller="xxx"
  {{msg}}

vue:

html:
<div id="box">
    {{msg}}
</div>

var c=new Vue({
  el:'#box',    //選擇器  class tagName
  data:{
    msg:'welcome vue'
  }
});

6客叉、常用指令:

指令: 擴(kuò)展html標(biāo)簽功能,屬性

angular:

ng-model   ng-controller
ng-repeat
ng-click
ng-show  

$scope.show=function(){}

Vue:

  1. v-model 一般表單元素 雙向數(shù)據(jù)綁定
    實(shí)例:
  • v_model01.html
<!-- 一片html代碼配合上json,再new出來vue實(shí)例 -->
<div id="box">
  <input type="text" v-model="msg"/>
  {{msg}}
</div>

<script type="text/javascript" src="vue.js"></script>  <!-- v1.0.21 -->
<script type="text/javascript">

  var c = new Vue({  //{}--json形式诵竭;c可取任意名字
    el: '#box',
    data: {
      msg: 'Welcome vue'
    }
  });

</script>
  • v_model02.html
<div class="box">
  <input type="text" v-model="msg"/>
  {{msg}}
</div>

<script type="text/javascript" src="vue.js"></script>  <!-- v1.0.21 -->
<script type="text/javascript">

  var vm = new Vue({  //{}--json形式;vm可取任意名字
    el: '.box', //類選擇器亦可
    data: {
      msg: 'Welcome vue'
    }
  });

</script>
  • v_model03.html
  <input type="text" v-model="msg"/>
  {{msg}}

  <script type="text/javascript" src="vue.js"></script>  <!-- v1.0.21 -->
  <script type="text/javascript">

    var vm = new Vue({  //{}--json形式兼搏;c可取任意名字
      el: 'body', // **標(biāo)簽選擇器**亦可
      data: {
        msg: 'Welcome vue'
      }
    });
  </script>
  1. new Vue data:里面的數(shù)據(jù)可以是string,number,boolean,array,json
    示例:5 vue_data數(shù)據(jù)類型

  2. 循環(huán): v-for
    a-循環(huán)數(shù)組:

       <ul>
           <li v-for="value in arr">
                {{$index}} {{value}}  <!-- 索引值 值 -->
            </li>
       </ul>
    

b--循環(huán)json

    <ul>
      <li v-for="items in json">
        {{$index}}--{{$key}}: {{items}}  <!-- 索引卵慰、鍵、值 -->
      </li>
   </ul>
<ul>
  <li v-for="(k,v) in json2">
    {{$index}}--{{k}}: {{v}}  <!-- 索引佛呻、鍵裳朋、值 -->
  </li>
</ul>

4)事件:配合methods使用

  v-on:click= ""
  v-on:mouseover= ""
  v-on:mouseout=""
  v-on:mousedown=""
  v-on:dblclick=""

實(shí)例見 8 vue_基礎(chǔ)事件02.html

  <input type="button" value="按鈕" v-on:click="add()" />
  <script type="text/javascript">
    var vm = new Vue({  //{}--json形式;c可取任意名字
      el: '#box', //標(biāo)簽選擇器亦可
      data: {
        arr: ['apple','orange','banana'],  //數(shù)組
      },
      methods: {  //務(wù)必記得加s
        add: function(){
          // alert(this.arr);
          this.arr.push('pear'); //this指vm
        }
      }
    });
  </script>

5)顯示隱藏:

  v-show=“true/false”

bootstrap+vue簡(jiǎn)易留言板(todolist):

bootstrap: css框架    跟jqueryMobile一樣
    只需要給標(biāo)簽 賦予class吓著,角色
    依賴jquery

確認(rèn)刪除鲤嫡?和確認(rèn)刪除全部么?

FAQ:

  1. Bootstrap3--JavaScript插件中的模態(tài)框
  2. 優(yōu)化:將講師設(shè)置的“取消”與“確認(rèn)”所在的div的類名modal-body設(shè)置為
    modal-footer就直接右對(duì)齊,無需再設(shè)置text-right;
  3. 什么情況下“暫無數(shù)據(jù)呢...”?
<tr  v-show="myData.length==0">
    <td colspan="4" class="text-center text-muted">
        <p>暫無數(shù)據(jù)....</p>
    </td>
</tr>
  1. 什么情況下“刪除全部”顯示?
<tr v-show="myData.length!=0">
    <td colspan="4" class="text-right">
        <button class="btn btn-danger btn-sm">刪除全部</button>
    </td>
</tr>
  1. 動(dòng)態(tài)設(shè)置 序號(hào)绑莺、名字暖眼、年齡、操作,
data: {
  myData: [
    {name:'xxx',age:'xxx'}
  ]
}

<tr class="text-center" v-for="items in myData">
    <td>{{$index}}</td>
    <td>{{items.name}}</td>
    <td>{{items.age}}</td>
    <td>
        <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">刪除</button>
    </td>
</tr>

效果圖如下:


效果圖01.gif
  1. 添加按鈕:
  2. 難點(diǎn):
    刪除按鈕 01:12:00

7纺裁、事件:

v-on:click/mouseover......
簡(jiǎn)寫的:
@click="" 推薦
例子:

<input type="button" value="按鈕" v-on:click="show()" />
<input type="button" value="按鈕" @click="show()" />

8诫肠、事件對(duì)象:

@click="show($event)"
示例:

<div id="box">
  <input type="button" value="按鈕" @click="show($event)" />
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
  window.onload = function() {
    var c = new Vue({
      el: "#box",
      data: {

      },
      methods: {
        show: function(ev){
          alert(ev.clientX);
        }
      }
    });
  }
</script>

9司澎、事件冒泡:

實(shí)例:點(diǎn)擊按鈕 會(huì)以此彈出1和2,說明出現(xiàn)了事件冒泡

<div id="box">
  <div @click="show2()">
    <input type="button" value="按鈕" @click="show()" />
  </div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
window.onload = function() {
  var c = new Vue({
    el: "#box",
    data: {

    },
    methods: {
      show: function(){
        alert(1);
      },
      show2: function(){
        alert(2);
      }
    }
  });
}
</script>

阻止冒泡:

a). ev.cancelBubble=true; [原生JS]

  <div @click="show2()">
     <input type="button" value="按鈕" @click="show($event)" />
  </div>
  var c = new Vue({
    el: "#box",
    data: {

    },
    methods: {
      show: function(ev){
        alert(1);
        ev.cancelBubble=true;

      },
      show2: function(){
        alert(2);
      }
    }
  });

b). @click.stop 推薦

<div id="box">
  <div @click="show2()">
    <input type="button" value="按鈕" @click.stop="show($event)" />
  </div>
</div>
var c = new Vue({
    el: "#box",
    data: {

    },
    methods: {
      show: function(ev){
        alert(1);
      },
      show2: function(){
        alert(2);
      }
    }
  });

10栋豫、默認(rèn)行為(默認(rèn)事件):

阻止默認(rèn)行為:

a). ev.preventDefault(); [原生JS]

  <div id="box">
    <input type="button" value="按鈕" @contextmenu="show($event)" />
  </div>

  var c = new Vue({
    el: "#box",
    data: {

    },
    methods: {
      show: function(ev){
        alert(1);
        ev.preventDefault();
      }
    }
  });
}
</script>

b). @contextmenu.prevent 推薦

  <div id="box">
    <input type="button" value="按鈕" @contextmenu.prevent="show()" />
  </div>

11挤安、鍵盤:

@keydown $event ev.keyCode
@keyup

示例1:

  <div id="box">
    <input type="button" value="按鈕" @keydown="show()" />
  </div>

示例2:

<div id="box">
    <input type="text" @keydown="show($event)" />
  </div>

  methods: {
      show: function(ev){
        alert(ev.keyCode);
      }
  }

常用鍵:

回車(ev.keyCode == 13)

a). @keyup.13

<input type="text" @keydown.13="show()" />

b). @keyup.enter

<input type="text" @keydown.enter="show()" />

c). 上、下丧鸯、左蛤铜、右

  • @keyup/keydown.left
  • @keyup/keydown.right
  • @keyup/keydown.up
  • @keyup/keydown.down
    .....

12、屬性:

v-bind:src=""
    width/height/title....

簡(jiǎn)寫:
:src="" 推薦

![]({{url}})    效果能出來丛肢,但是會(huì)報(bào)一個(gè)404錯(cuò)誤
![](url)    效果可以出來围肥,不會(huì)發(fā)404請(qǐng)求
vue_屬性01.jpg

特殊屬性:class和style:

1、class

  • :class=""
    v-bind:class=""
    :style=""
    v-bind:style=""

  • :class="{red:true, blue:true}"

  <div id="box">
    <strong :class="{red: true,big:true}">class屬性</strong>
  </div>

  <style type="text/css">
    .red{
      color: red;
    }
    .big{
      font-size: 30px;
    }
  </style>

效果圖:

vue_class屬性01.jpg

:class="{red:a, blue:false}"

  <div id="box">
    <strong :class="{red:a,blue:false}">class屬性</strong>
  </div>

  <style type="text/css">
    .red{color: red;}
    .blue{background-color: blue;}
  </style>

    var vm=new Vue({
      el: '#box',
      data: {
        a: true
      }
    });
  • :class="[red]" //red是data里面的數(shù)據(jù)

    :class="[red,b,c,d]" //多個(gè)class的情況

vue_class屬性02.jpg

  • :class="json"
new Vue({
    el:'#box',
    data:{
        json:{
            red:true,
            blue:true
        }
    }
});
<div id="box">
        <strong :class="json">文字...</strong>
</div>

2蜂怎、style:

<strong :style="{color:'red'}">style屬性</strong>
<!-- 注意:red加引號(hào) -->
  • :style="[c]"
vue_style01.jpg
  • :style="[c,d]"
    注意: 復(fù)合樣式虐先,采用駝峰命名法
vue_style02.jpg
  • :style="json" --官方推薦
vue_style03.jpg

模板:

  • {{msg}} 數(shù)據(jù)更新模板變化
  • {{*msg}} 數(shù)據(jù)只綁定一次
vue_msg01.jpg
  • {{{msg}}} HTML轉(zhuǎn)義輸出
vue_轉(zhuǎn)義輸出.jpg

過濾器:-> 過濾模板數(shù)據(jù)

系統(tǒng)提供一些過濾器:

{{msg| filterA}}
{{msg| filterA | filterB}}

uppercase eg: {{'welcome'| uppercase}}
lowercase
capitalize --首字母大寫
currency 錢
{{msg| filterA 參數(shù)}}
....
實(shí)例如下:

過濾器01.jpg

交互:

Angular:$http   (ajax對(duì)象)

如果vue想做交互

引入: vue-resouce (庫)

get:
    獲取一個(gè)普通文本數(shù)據(jù):
    this.$http.get('aa.txt').then(function(res){
        alert(res.data);
    },function(res){
        alert(res.status);
    });
    給服務(wù)發(fā)送數(shù)據(jù):√
    this.$http.get('get.php',{
        a:1,
        b:2
    }).then(function(res){
        alert(res.data);
    },function(res){
        alert(res.status);
    });

PHP我不會(huì)也~~嗚嗚
post:
this.$http.post('post.php',{
a:1,
b:20
},{
emulateJSON:true
}).then(function(res){
alert(res.data);
},function(res){
alert(res.status);
});

jsonp:
    https://sug.so.#/suggest?callback=suggest_so&word=a
    https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=jshow
    this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
        wd:'a'
    },{
        jsonp:'cb'  //callback名字,默認(rèn)名字就是"callback"
    }).then(function(res){
        alert(res.data.s);
    },function(res){
        alert(res.status);
    });

https://www.baidu.com/s?wd=s

案例:百度下拉列表

作業(yè):
    1. 簡(jiǎn)易留言板-> 確認(rèn)刪除? 確認(rèn)刪除全部 (模態(tài)框標(biāo)題更改)
    2. 用vue get 寫個(gè)例子    weibo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末派敷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撰洗,更是在濱河造成了極大的恐慌篮愉,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件差导,死亡現(xiàn)場(chǎng)離奇詭異试躏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)设褐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門颠蕴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人助析,你說我怎么就攤上這事犀被。” “怎么了外冀?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵寡键,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我雪隧,道長(zhǎng)西轩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任脑沿,我火速辦了婚禮藕畔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庄拇。我一直安慰自己注服,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祠汇,像睡著了一般仍秤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上可很,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天诗力,我揣著相機(jī)與錄音,去河邊找鬼我抠。 笑死苇本,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菜拓。 我是一名探鬼主播瓣窄,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纳鼎!你這毒婦竟也來了俺夕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤贱鄙,失蹤者是張志新(化名)和其女友劉穎劝贸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗宁,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡映九,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞎颗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片件甥。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哼拔,靈堂內(nèi)的尸體忽然破棺而出引有,到底是詐尸還是另有隱情,我是刑警寧澤管挟,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布轿曙,位于F島的核電站,受9級(jí)特大地震影響僻孝,放射性物質(zhì)發(fā)生泄漏导帝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一穿铆、第九天 我趴在偏房一處隱蔽的房頂上張望您单。 院中可真熱鬧,春花似錦荞雏、人聲如沸虐秦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悦陋。三九已至蜈彼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俺驶,已是汗流浹背幸逆。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暮现,地道東北人还绘。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像栖袋,于是被迫代替她去往敵國(guó)和親拍顷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 基本格式 以json的形式塘幅、將數(shù)據(jù)(支持所有格式)掛載在vue的data上昔案、方法掛載在vue的methods上。 ...
    kirito_song閱讀 750評(píng)論 0 21
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容电媳,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容爱沟。關(guān)于...
    云之外閱讀 5,045評(píng)論 0 29
  • 1. 初識(shí)vue (1) vue到底是什么? 一個(gè)mvvm框架(庫)、和angular類似 比較容易上手匆背、小巧m...
    懶心丶閱讀 298評(píng)論 0 0
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,202評(píng)論 0 6
  • 我們要保持一個(gè)平靜的心態(tài)钝尸,要能控制住自己的情緒,才不至于惹禍搂根。在我的人生中珍促,就碰過這樣一個(gè)實(shí)例。當(dāng)時(shí)我在老家有兩個(gè)...
    秦東魁閱讀 240評(píng)論 0 0