Vue入門(mén)---常用指令詳解

Vue入門(mén)

Vue是一個(gè)MVVM(Model / View / ViewModel)的前端框架,相對(duì)于A(yíng)ngular來(lái)說(shuō)簡(jiǎn)單、易學(xué)上手快,近兩年也也別流行,發(fā)展速度較快,已經(jīng)超越Angular了。比較適用于移動(dòng)端,輕量級(jí)的框架,文件小,運(yùn)行速度快。最近,閑來(lái)無(wú)事,所以學(xué)習(xí)一下Vue這個(gè)流行的框架,以備后用。

一、指令

  1. v-model 多用于表單元素實(shí)現(xiàn)雙向數(shù)據(jù)綁定(同angular中的ng-model)
  2. v-for 格式: v-for="字段名 in(of) 數(shù)組json" 循環(huán)數(shù)組或json(同angular中的ng-repeat),需要注意從vue2開(kāi)始取消了$index
  3. v-show 顯示內(nèi)容 (同angular中的ng-show)
  4. v-hide 隱藏內(nèi)容(同angular中的ng-hide)
  5. v-if 顯示與隱藏 (dom元素的刪除添加 同angular中的ng-if 默認(rèn)值為false)
  6. v-else-if 必須和v-if連用
  7. v-else 必須和v-if連用 不能單獨(dú)使用 否則報(bào)錯(cuò) 模板編譯錯(cuò)誤
  8. v-bind 動(dòng)態(tài)綁定 作用: 及時(shí)對(duì)頁(yè)面的數(shù)據(jù)進(jìn)行更改
  9. v-on:click 給標(biāo)簽綁定函數(shù),可以縮寫(xiě)為@,例如綁定一個(gè)點(diǎn)擊函數(shù) 函數(shù)必須寫(xiě)在methods里面
  10. v-text 解析文本
  11. v-html 解析html標(biāo)簽
  12. v-bind:class 三種綁定方法 1、對(duì)象型 '{red:isred}' 2、三元型 'isred?"red":"blue"' 3、數(shù)組型 '[{red:"isred"},{blue:"isblue"}]'
  13. v-once 進(jìn)入頁(yè)面時(shí) 只渲染一次 不在進(jìn)行渲染
  14. v-cloak 防止閃爍
  15. v-pre 把標(biāo)簽內(nèi)部的元素原位輸出

二、基本組件屬性

new Vue({
  el,         // 要綁定的 DOM element
  template,   // 要解析的模板,可以是 #id, HTML 或某個(gè) DOM element
  data,       // 要綁定的數(shù)據(jù)
  computed,   // 依賴(lài)于別的數(shù)據(jù)計(jì)算出來(lái)的數(shù)據(jù), name = firstName + lastName
  watch,      // 監(jiān)聽(tīng)方法, 監(jiān)聽(tīng)到某一數(shù)據(jù)變化時(shí), 需要做的對(duì)應(yīng)操作
  methods,    // 定義可以在元件或模板內(nèi)使用的方法
})

三、基礎(chǔ)使用

1.html

 <div id="app">
    <p>{{msg}}</p>
</div>

2.js

var app=new Vue({
        el:'#app',//標(biāo)簽的類(lèi)名、id,用于獲取元素
        //以鍵值對(duì)的形式存放用到的數(shù)據(jù)成員
        data:{
            msg:'顯示的內(nèi)容'       
        },
        //包含要用到的函數(shù)方法
        methods:{            
        }
    });

這樣js中msg的內(nèi)容就會(huì)在p標(biāo)簽內(nèi)顯示出來(lái)。

四、實(shí)例

利用bootstrap+vue實(shí)現(xiàn)簡(jiǎn)易留言板的功能,可以增加、刪除,彈出模態(tài)框

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>簡(jiǎn)易留言板</title>
   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black">
   <style>

   </style>
   <link rel="stylesheet" href="../../node_modules/bootstrap/dist/css/bootstrap.min.css">
   <script src="../../node_modules/jquery/dist/jquery.min.js"></script>
   <script src="../../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>

   <script src="../../node_modules/vue/dist/vue.js"></script>
   <script>
      window.onload=function(){
         new Vue({
            el:'#box',
            data:{
               myData:[],
               username:'',
               age:'',
               nowIndex:-100
            },
            methods:{
               add:function(){
                  this.myData.push({
                     name:this.username,
                     age:this.age
                  });

                  this.username='';
                  this.age='';
               },
               deleteMsg:function(n){
                  if(n==-2){
                     this.myData=[];
                  }else{
                     this.myData.splice(n,1);
                  }
               }
            }
         });
      };
   </script>
</head>
<body>
<div class="container" id="box">
   <form role="form">
      <div class="form-group">
         <label for="username">用戶(hù)名:</label>
         <input type="text" id="username" class="form-control" placeholder="輸入用戶(hù)名" v-model="username">
      </div>
      <div class="form-group">
         <label for="age">年 齡:</label>
         <input type="text" id="age" class="form-control" placeholder="輸入年齡" v-model="age">
      </div>
      <div class="form-group">
         <input type="button" value="添加" class="btn btn-primary" v-on:click="add()">
         <input type="reset" value="重置" class="btn btn-danger">
      </div>
   </form>
   <hr>
   <table class="table table-bordered table-hover">
      <h3 class="h3 text-info text-center">用戶(hù)信息表</h3>
      <tr class="text-danger">
         <th class="text-center">序號(hào)</th>
         <th class="text-center">名字</th>
         <th class="text-center">年齡</th>
         <th class="text-center">操作</th>
      </tr>
      <tr class="text-center" v-for="(item,index) in myData">
         <td>{{index+1}}</td>
         <td>{{item.name}}</td>
         <td>{{item.age}}</td>
         <td>
            <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" v-on:click="nowIndex=$index">刪除</button>
         </td>
      </tr>
      <tr v-show="myData.length!=0">
         <td colspan="4" class="text-right">
            <button class="btn btn-danger btn-sm" v-on:click="nowIndex=-2" data-toggle="modal" data-target="#layer" >刪除全部</button>
         </td>
      </tr>
      <tr v-show="myData.length==0">
         <td colspan="4" class="text-center text-muted">
            <p>暫無(wú)數(shù)據(jù)....</p>
         </td>
      </tr>
   </table>

   <!--模態(tài)框 彈出框-->
   <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
      <div class="modal-dialog">
         <div class="modal-content">
            <div class="modal-header">
               <h4 class="modal-title">確認(rèn)刪除么?</h4>
               <button type="button" class="close" data-dismiss="modal">
                  <span>&times;</span>
               </button>

            </div>
            <div class="modal-body text-right">
               <button data-dismiss="modal" class="btn btn-primary btn-sm">取消</button>
               <button data-dismiss="modal" class="btn btn-danger btn-sm" v-on:click="deleteMsg(nowIndex)">確認(rèn)</button>
            </div>
         </div>
      </div>
   </div>
</div>
</body>
</html>

運(yùn)行效果:


效果圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # 傳智播客vue 學(xué)習(xí)## 1. 什么是 Vue.js* Vue 開(kāi)發(fā)手機(jī) APP 需要借助于 Weex* Vu...
    再見(jiàn)天才閱讀 3,790評(píng)論 0 6
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,037評(píng)論 1 52
  • Vue學(xué)習(xí)筆記 Vue初始化對(duì)象 data和methods里面的屬性都是Vue這個(gè)實(shí)例對(duì)象的代理屬性,例:vm.m...
    土豪碼農(nóng)閱讀 1,031評(píng)論 1 1
  • AngularJS是什么?AngularJs(后面就簡(jiǎn)稱(chēng)ng了)是一個(gè)用于設(shè)計(jì)動(dòng)態(tài)web應(yīng)用的結(jié)構(gòu)框架。首先,它是...
    200813閱讀 1,782評(píng)論 0 3
  • 她還是忍不住打開(kāi)了:這個(gè)她每次都忍著不去主動(dòng)聯(lián)系的人的微信對(duì)話(huà)框,想起上次聯(lián)系還是上周的周一,今天是周五,距...
    忘川流年閱讀 294評(píng)論 0 0

友情鏈接更多精彩內(nèi)容