VUE學習——vue的內部指令學習(趁自己沒忘,學習記錄一下)

来源:http://www.cnblogs.com/LULULI/archive/2017/11/10/7815744.html
-Advertisement-
Play Games

1.v-if&v-else&v-show v-if用來判斷是否載入html的DOM,v-if和v-else一般是一起用的。 v-show相當於display,DOM已經載入出來了,這個是判斷它要不要顯現出來 2.v-for,這個主要是迴圈輸出的問題,js里不是有for..in...迴圈麽?這個跟那個 ...


1.v-if&v-else&v-show

  v-if用來判斷是否載入html的DOM,v-if和v-else一般是一起用的。

  v-show相當於display,DOM已經載入出來了,這個是判斷它要不要顯現出來

 <div id="app">
     <div v-if="isLogin">您好,CHENXQ</div>
     <div v-else>請登錄後操作</div>
     <div v-show="isShow">CHENCHENYEAH</div>
    </div>
    <script type="text/javascript">
     var app=new Vue({
         el:'#app',
         data:{
             isLogin:true,
             isShow:false
         }
        
     })
    </script>

2.v-for,這個主要是迴圈輸出的問題,js里不是有for..in...迴圈麽?這個跟那個類似,可以說是一樣的,只是寫法有些許的不同,這個可以讓一個數組直接輸出

<li v-for="item in items">
     {{item}}
 
   </li>
<script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                              items:[12,34,56,2,8,90],
                      }
                      });
</script>

也可以對這個數組進行排序後輸出,需要註意的是此時的排序的數組需要在computed重新聲明,computed相當於屬性的一個實時計算,如果實時計算里關聯了對象,那麼當對象的某個值改變的時候,同時會實時計算

<div id="app">
                <ul>
                        <li v-for="item in sortItems">
                            {{item}}
 
                        </li>
                    </ul>
             
               </div>
                 <script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                              items:[12,34,56,2,8,90],
                        
                          },
                          computed:{
                              sortItems:function(){
                                  return this.items.sort(sortNumber);
                              },
                            
 
                          }
                      });
                      function sortNumber(a,b){
                          return a-b;
                      }
      
                 </script>

以上是對純數字數組的一個排序,數組對象的排序如下:

<div id="app">
                <ul>
                        <li v-for="item in sortItems">
                            {{item}}
 
                        </li>
                    </ul>
                   <div v-for="(student,index) in sortStudents">
                      {{index+1}}: {{student.name}} :{{student.age}}
                   </div>
                  
                      
               </div>
                 <script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                              items:[12,34,56,2,8,90],
                              students:[
                                  {name:'chenxq', age:21,subject:'English'},
                                  {name:'cxq',age:18,subject:'science'},
                                  {name:'Shaquila',age:24,subject:'math'},
                                  {name:'fengmo',age:7,majorin:'tecent'}

 
                                  ]
                              
                     
                          },
                          computed:{
                              sortItems:function(){
                                  return this.items.sort(sortNumber);
                              },
                              sortStudents:function(){
                                return sortByKey(this.students,'age');
                              }
 
                          }
                      });
                      function sortNumber(a,b){
                          return a-b;
                      }
                      //數組對象方法排序:
                      function sortByKey(array,key){
                          return array.sort(function(a,b){
                              var x=a[key];
                              var y=b[key];
                              return((x<y)?-1:((x>y)?1:0));
                          });
                      }

       
                 </script>

3.v-bind 處理html中的標簽屬性,可以直接綁定標簽中的屬性,也可以綁定style,以及綁定class樣式,簡寫“:”

<div id="app">
                   <img v-bind:src="imgSrc"  width="400px" height="200px"/>

            <a :href="webUrl" target="_blank">技術胖</a>
            <div :class="className" width="200px" height="200px">
                1.div綁定class
            </div>
            <div :class="{classA:isTrue}" width="200px" height="200px">
                    2.div綁定class中的判斷
            </div>
            <div :class="[classA,classB]" width="200px" height="200px">
                        3.div綁定class中的數組判斷
            </div>
            <div :class="isTrue?classA:classB" width="200px" height="200px">
                    4.div綁定class中的三元運算符
           </div>
            <hr>
            <div>
                <input type="checkbox" id="isTrue" v-model="isTrue">
                <label for="isTrue">isTrue={{isTrue}}</label>
            </div>
            <hr>
            <div :style="{color:red,fontSize:font}"> 
                 5.div綁定style.
            </div>
            <div :style="styleObject">6.綁定style對象</div>

         </div>

             <script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                              imgSrc:'http://jspang.com/wp-content/uploads/2017/02/vue01-2.jpg',
                              webUrl:'http://jspang.com',
                              className:'classA',
                              isTrue:false,
                              classA:'classA',
                              classB:'classB',
                              red:'red',
                              font:'20px',
                              styleObject:{
                                  color:'green',
                                  fontSize:'24px'
                              }

                          }
                      })
                 </script>

4.v-model把數據綁定在特定的表單元素上,實現雙向綁定

<div id="app">
                  <p>原始文本信息{{message}}my name is chenxq</p>
                  <h3>文本框</h3>
                  <p>v-model:<input type="text" v-model="message"></p>
                  <p>v-model.lazy:<input type="text" v-model.lazy="message"></p>
                  <p>v-model.number:<input type="text" v-model.number="message"></p>
                  <p>v-model.trim:<input type="text" v-model.trim="message"></p>
                  <hr>
                  <h3>文本域</h3>
                  <textarea name="" id="" cols="30" rows="10" v-model="message"></textarea>
                  <hr>
                  <h3>多選框綁定一個值</h3>
                  <input type="checkbox" id="isTrue" v-model="isTrue">
                  <label for="isTrue">{{isTrue}}</label>
                  <hr>
                  <h3>多選框綁定一組值</h3>
                  <p>
                      <ol>
                    <li><input type="checkbox" id="javascript" value="javscript" v-model="webnames">
                      <label for="isTrue">javascript</label>
                    </li>
                    <li><input type="checkbox" id="python" value="python" v-model="webnames">
                      <label for="isTrue">python</label>
                    </li>
                    <li>
                      <input type="checkbox" id="java" value="java" v-model="webnames">
                      <label for="isTrue">java</label>
                    </li>
                    <li>
                      <input type="checkbox" id="angular" value="angular" v-model="webnames">
                      <label for="isTrue">angular</label>
                    </li>
                    <li>
                      <input type="checkbox" id="jquery" value="jquery" v-model="webnames">
                      <label for="isTrue">jquery</label>
                    </li>
                      </ol>
                  </p>
                  <p>
                      {{webnames}}
                  </p>
                  <hr>
                  <h3>單選框綁定</h3>
                  <p>
                      <input type="radio" id="one" value="male" v-model="sex">
                      <label for="one">male</label>
                      <input type="radio" id="two" value="female" v-model="sex">
                      <label for="two">female</label>
                      <p>您選擇的性別是:{{sex}}</p>
                  </p>
                  
                      
               </div>
                 <script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                             message:'v-model',
                             isTrue:true,
                             webnames: [],
                             sex:'male'
                          }
                      })
                 </script>

5.v-on 綁定事件監聽器,觸發一些事件,簡寫“@”

 <div id="app">
                   本場比賽得分:{{score}}
                    <p><button v-on:click="add">加分</button>
                    <button @click="sub">減分</button><br />
                    <input type="text" v-on:keyup.enter="onEnter" v-model="score2">
                    </p>
               </div>
                 <script type="text/javascript">
                      var app=new Vue({
                          el:'#app',
                          data:{
                              score:0,
                              score2:1
                          },
                          methods:{
                              add:function(){
                                  this.score++;
                              },
                              sub:function(){
                                  this.score--;
                              },
                              onEnter:function(){
                                  this.score=this.score+parseInt(this.score2);
                              }
                    

                          }
            
                      })
                 </script>

鍵盤事件可以用數字來表示,相關按鍵對應的數字:

6.v-pre&v-cloak&v-once

  v-pre就是在模板中跳過vue的編譯,直接輸出原始值。就是在標簽中加入v-pre就不會輸出vue中的data值了。

  v-cloak在vue渲染完指定的整個DOM後才進行顯示。它必須和CSS樣式一起使用。

  v-once在第一次DOM時進行渲染,渲染完成後視為靜態內容,跳出以後的渲染過程。

7.v-text&v-html

 v-text,就是解決當我們網速很慢或者javascript出錯時,{{xxx}}會暴露的問題。

 如果在javascript中寫有html標簽,用v-text是輸出不出來的,這時候我們就需要用v-html標簽了。雙大括弧會將數據解釋為純文本,而非HTML。為了輸出真正的HTML,需要使用v- html 指令.

需要註意的是:在生產環境中動態渲染HTML是非常危險的,因為容易導致XSS攻擊。所以只能在可信的內容上使用v-html,永遠不要在用戶提交和可操作的網頁上使用.

 

 

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目1:數據訪問,通過資料庫對用戶表單的進行訪問,資料庫包含SQL Server,對用戶表單進行“新增用戶”和“查詢用戶”信息等操作。 分析: 首先,確認用戶表單,裡面包含兩個ID和Name兩個欄位,兩種欄位可以讀寫功能; 單獨準備一個資料庫的類,然後直接對用戶直接進行操作即可。 實現: 1 usi ...
  • DUBBO與ZOOKEEPER、SPRINGMVC整合和使用 互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分散式服務架構以及流動計算架構勢在必行,Dubbo是一個分散式服務框架,在這種情況下誕生的。現在核心業務抽取出來,作為獨立的服務,使前端應用能更快速和穩定的響應。 第一: ...
  • 前言 相信逛過淘寶的人肯定都見過,網站上經常有那種圖片輪播的形式。而今天,要介紹的相關知識就是為了實現圖片輪播的效果。筆者整理了一些相關的知識儲備,並且實現了一個小的案例,用以複習相關知識點。 一、案例分析 實現替換圖片: 第一步:確定事件(頁面載入事件onload)併為其綁定一個函數 第二步:書寫 ...
  • 如何通過使用Q來併發執行多個promises呢? 上面的代碼輸出結果為1。很顯然,你不能簡單地將各個promises都放到一個Q()函數里來執行,這樣只有第一個promise會被正確地執行,剩餘的都會被忽略掉。 你可以使用Q.all來代替上面的方法,它們之間的主要區別是前者將每個promise單獨作 ...
  • 下麵以現實場景作為情境。 基礎知識,理解git中的幾個區域 本地代碼已經add,未commit 修改本地工作目錄中的readme.md,添加文字"第一次修改" 然後查看下狀態 進行Add操作,並查看狀態 這時候,變動進入了緩存區(Index) 但是我們突然發現我們改動錯了,其實我是想改動 文件。 方 ...
  • ...
  • 瞭解瞭解 jQuery是一個快速,小巧,功能豐富的JavaScript庫。它使諸如HTML文檔遍歷和操縱,事件處理,動畫和Ajax等事情變得簡單得多,而且易於使用的API可以在多種瀏覽器中使用。 一、 什麼是JQuery? jQuery是一個JavaScript函數庫。 jQuery是一個輕量級的" ...
  • 在一些項目需求中需要父組件向子組件動態傳值,比如我這裡的需求是,父組件動態通過axios獲取返回的圖片url數組然後傳給子組件,上傳圖片的子組件拿到該數組後進行遍歷並展示圖片 方法有兩種, 方法一: props傳值,這裡註意一個問題,傳過來的值需要用watch監聽並賦值,否則這裡獲取到的是空數組 父 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...