[js高手之路] vue系列教程 - vue的基本用法與常見指令(1)

来源:http://www.cnblogs.com/ghostwu/archive/2017/08/14/7359055.html
-Advertisement-
Play Games

本系列課程選用vue的版本為1.0.21, 什麼是vue? vue是由尤雨溪開發的一款基於MVVM的框架,M->模型,V->視圖, 也就是說模型數據改變了,視圖也跟著改變, 視圖內容改變,模型內容也跟著改變, 業界稱之為雙向綁定,或者說雙向數據驅動,基於此特點,學習這個框架,跟jquery完全不同, ...


本系列課程選用vue的版本為1.0.21,

什麼是vue?

vue是由尤雨溪開發的一款基於MVVM的框架,M->模型,V->視圖, 也就是說模型數據改變了,視圖也跟著改變, 視圖內容改變,模型內容也跟著改變, 業界稱之為雙向綁定,或者說雙向數據驅動,基於此特點,學習這個框架,跟jquery完全不同, 不要用DOM的思想來學習vue, 在vue裡面幾乎不需要用到DOM操作,一切都是基於數據驅動.

如何使用vue?

現在vue已經發佈了2版本,為什麼學1版本,如果想要深入的學習vue,瞭解和掌握個版本的異同是很有必要的。要想使用vue,首先必須引入vue,在客戶端(瀏覽器)可以通過script標簽引入,如果是服務端,通過import引入

一個基本的vue程式有哪些部分組成?

就像初學者學習jquery一樣,一個基本的jquery程式, 有 domReady, 選擇器,this綁定,事件綁定,屬性和樣式修改組成的,而vue的基本結構如下:

window.onload = function () {
            var c = new Vue({
                el: '#box', //相當於選擇器
                data: {
                    content: 'ghostwu tell you how to learn vue',
                    msg : 'vue中的數據1',
                    msg2 : 'vue中的數據2'
                }
            });
}

這段簡單的代碼,可以實現最基本的數據讀取和顯示功能.  

1,使用vue,先要實例化一個vue

2,構造函數中,傳入字面量對象, data後面也是一個字面量對象,裡面的數據可以自定義,按照json的格式

3,el: 表示要把data中的數據顯示在 el 後面跟的元素下麵, 比如上面的例子, 就是把data中, content, msg, msg2的數據顯示在id 為 box的元素下麵

具體怎麼讀取呢?

1 <div id="box">
2     {{content}}
3     <br>
4     {{msg}}
5     <br>
6     {{msg2}}
7 </div>

{{data中定義的鍵}}, 如{{content}} 讀取的就是vue實例 data裡面的 content定義的值,所以{{content}}輸出 ghostwu tell you how to learn vue, 同理{{msg}}輸出vue中的數據1 ,

{{msg2}}輸出 vue中的數據2

如果我們需要讓數據顯示在不同的元素下麵,可以定義多個vue實例

 1         window.onload = function () {
 2             var c = new Vue({
 3                 el: '#box', //相當於選擇器
 4                 data: {
 5                     content: 'ghostwu tell you how to learn vue',
 6                     msg : 'vue中的數據1',
 7                     msg2 : 'vue中的數據2'
 8                 }
 9             });
10            var c2 = new Vue({
11                el: '#box2',
12                data: {
13                    msg: 'this is a paragraphy'
14                }
15            });
16            var c3 = new Vue({
17                el: '#box3',
18                data: {
19                    msg2: 'this is box3'
20                }
21            });
22         }
1 <p id="box2">{{msg}}</p>
2 <div id="box">
3     {{content}}
4     <br>
5     {{msg}}
6     <br>
7     {{msg2}}
8 </div>
9  <div id="box3">{{msg2}}</div> 

指令:v-model  作用:實現數據的雙向驅動

        window.onload = function () {
            var c = new Vue({
                el: "body",
                data: {
                    msg: 'welcome to study vue!!!'
                }
            });
        }
 1     <input type="text" v-model="msg" id="txt" />
 2     <input type="text" v-model="msg" id="txt2"/>
 3     <br/>
 4     {{msg}}
 5     <div class="box">
 6         {{msg}}
 7     </div>
 8     <div class="box">
 9         {{msg}}
10     </div>
11     <div class="box">
12         {{msg}}
13     </div>
14     <div class="box">
15         {{msg}}
16     </div>

上例,如果修改data中msg的值,那麼輸入框中v-model綁定的msg, 以及4個div中輸出的msg的值 都會隨著data中msg的值的變化而變化,這個就叫做M->V,模型M(data中的數據),

視圖V(html代碼).  模型改變,視圖V也跟著改變, 同樣的上面兩個input輸入框中的值任何一個改變了,data中的msg也會改變,4個div中的msg也跟著改變,這個就叫做V->M,視圖改變,模型數據也跟著改變.

data中可以定義哪些數據?

常見的字元串,整形數字,數組,布爾,對象類型都可以

 1          window.onload = function () {
 2             var c = new Vue({
 3                 el: 'body',
 4                 data: {
 5                     msg: 'this is a msg',
 6                     msg2 : 'hello world!',
 7                     arr : [ 100, 200, 300 ],
 8                     flag : true,
 9                     json : {
10                         key1 : '八戒',
11                         key2 : '悟空',
12                         key3 : '沙僧'
13                     },
14                     num : 100,
15                 }
16             });
17         }
1     {{msg}} <br/>
2     {{msg2}} <br/>
3     {{arr}} <br/>
4     {{flag}} <br/>
5     {{json}}<br/>
6     {{num}}<br/>

輸出結果:

this is a msg 
hello world! 
100,200,300 
true 
[object Object]
100

對於json數據,預設情況輸出的是object Object,實際使用中,我們肯定是不希望輸出這玩意, 所以,vue中提供了一個指令v-for

指令:v-for. 作用:迴圈數組與對象

 1     window.onload = function () {
 2             var c = new Vue({
 3                 el: '#box',
 4                 data: {
 5                     persons: {
 6                         name1: '八戒',
 7                         name2: '沙增',
 8                         name3: '悟空'
 9                     }
10                 }
11             });
12         }
1 <div id="box">
2     <ul>
3         <li v-for="value in persons">{{value}}</li>
4     </ul>
5     <ul>
6         <li v-for="a in persons">{{a}}</li>
7     </ul>
8 </div>

輸出結果:

  • 八戒
  • 沙增
  • 悟空
  • 八戒
  • 沙增
  • 悟空

v-for指令中, in前面的變數,就是當前需要輸出persons的每一項的值,他的名稱可以自定義.

v-for也可以迴圈數組

1         window.onload = function () {
2             var c = new Vue({
3                 el : '#box',
4                 data : {
5                     arr : [ '張三', 100, '李四', 200 ]
6                 }
7             });
8         }
1 <ul id="box">
2     <li v-for="value in arr">{{value}}</li>
3 </ul>

輸出結果:

  • 張三
  • 100
  • 李四
  • 200

如果需要獲取當前數組項的索引,可以用{{$index}}

1 <ul id="box">
2     <li v-for="value in arr">{{value}}----{{$index}}</li>
3 </ul>

輸出結果:

  • 張三----0
  • 100----1
  • 李四----2
  • 200----3

v-for還有另外幾種形式,輸出數組:

 1         window.onload = function () {
 2             var c = new Vue({
 3                 el : '#box',
 4                 data : {
 5                     persons : {
 6                         name1 : "八戒",
 7                         name2 : "悟空",
 8                         name3 : "唐僧"
 9                     }
10                 }
11             });
12         }
1 <ul id="box">
2     <li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
3     <hr/>
4     <li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
5     <hr/>
6     <li v-for="(k,v) in persons">{{k}}----{{v}}---{{$index}}---{{$key}}</li>
7 </ul>

輸出結果:

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

  • name1----八戒---0---name1
  • name2----悟空---1---name2
  • name3----唐僧---2---name3

 


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

-Advertisement-
Play Games
更多相關文章
  • 學rn得朋友們,你們知道rn開源項目嗎?來吧看這裡:http://www.marno.cn/(rn開源項目) React Native學習之路(9) - 註冊登錄驗證的實現 + (用Fetch實現post請求) + (倒計時驗證碼)+(父子組件通信)+(asyncStorage非同步存儲) +(Tex ...
  • 一、JavaScript介紹 前端三劍客之JavaScript,簡稱js,可能是這三個裡面最難的一個了。很早以前,市面上流通著三種js版本,為了統一,ECMA(歐洲電腦製造協會)定義了規範的版本,即EcmaScript。 事實上ECMAScript只是JavaScript的一部分,完整的JavaS ...
  • 對location進行梳理,平時用的時候都是用什麼看什麼,今天把location整理一下,方便查詢 location.assign('地址') 等同於 location.href = '地址' 和 window.location = '地址' 後兩者使用的時候,也是觸發assign()方法,進行跳轉 ...
  • 在MyEclipse中JSON字元串的換行值是不同的,必須以'/n'換行,如果只是json驗證的問題,可以把json的驗證關掉試試。點擊所在的項目->Project->Proterties->MyEclipse->Validation,把JSON Validator中的Manual和Build的對號 ...
  • 功能:添加事件/完成事件/刪除事件 ...
  • 1.事件冒泡: 2.獲取某個元素的CSS屬性值: ...
  • 一、事件基礎 PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change... 移動端:cli ...
  • 產品終於上線,後期主要是優化了。在開發過程中用到了很多location對象的知識,趁現在有時間先整理一下。 Location 對象存儲在 Window 對象的 Location 屬性中,可通過window.location對其訪問,表示那個視窗中當前顯示的文檔的 Web 地址。它的 href 屬性存 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...