搜尋
首頁web前端js教程Vue.js 基礎指令的詳解

Vue.js 基礎指令的詳解

Jul 18, 2017 pm 04:33 PM
javascriptvue.js講解

1. Vue.js 如何綁定到頁面中,使用他的功能。

  先看下面的一段程式碼:

nbsp;html><meta><title></title>    <button>我是app1,点我</button><script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",
            data:{
                message:"我在app1中显示出来了吗?",
                func:function(){
                    alert(this.message);
                }
            }
        });
        console.log(app1.$data.message);  //这个要知道哈,app1就是一个变量,一个对象类型的变量,链式语法直接用即可</script>

  效果如下:

  

##  

  

#  上述程式碼就是點擊按鈕有彈窗,下面解析一下這段程式碼。

  

<span style="color: #000000"> var app1= new Vue({
    el:"#app1",
    data:{
       message:"我在app1中显示出来了吗?",
       func:function(){
            alert(this.message);
          }
       }
 });<br>console.log(app1.$data.message); <br></span>

  透過Vue.js的建構子實例化出一個根實例 app1 ,說穿了,這就是我們物件導向的對象的實例化,直接new 一個物件。

  

el:"#app1", 這是在 掛載我們實例化物件的元素節點,就是這個app1 物件作用域就是那一個標籤裡面的。這裡可以是 id、class、tagname。但主要還是用id,因為他的唯一性。   data:

{} 是定義 這個物件的變數和方法,注意所有在和 app1 有關聯的變數、方法都必須在data中宣告。

  

注意

: (1)作用域。 js5 只有函數作用域,所以 data 中的函數如果想調用變量,就必須透過  this. 調用,或直接透過物件名稱調用。

      (2)外部呼叫。 app1.$data.message; 在js中直接呼叫vue 物件的屬性、方法時,需要鍊式語法,一層層點出來,這裡用  $data  ,主要還是和js的變數作區別

        (3)與HTML程式碼的綁定。 這裡我是透過 js 的onclick直接綁定的,當然 vue 有自己的事件綁定,這裡暫且不講,如果用 js 的行內綁定,注意需要帶物件名。這就是純 OOP思想了。相信大家對物件導向也不陌生,如果真的不知道是啥玩意的,趕緊百度學去。
  以上就是最最最最最.....基礎的使用 vue  的方法了。

 

2. Vue 實例化物件的生命週期。

  接下來,我們說一下,一個實例化出來的對象,他的生命週期是啥樣的,要經歷那些階段。請看下面一段程式碼:

nbsp;html><meta><title></title><div>我的声明周期,大家看吧!</div><script></script><script></script><script>//以下代码时显示vm整个生命周期的流程var vm = new Vue({
            el: "#container",
            data: {
                test : &#39;hello world&#39;},
            beforeCreate: function(){
                console.log(this);
                showData(&#39;创建vue实例前&#39;,this);
            },
            created: function(){
                showData(&#39;创建vue实例后&#39;,this);
            },
            beforeMount:function(){
                showData(&#39;挂载到dom前&#39;,this);
            },
            mounted: function(){
                showData(&#39;挂载到dom后&#39;,this);
            },
            beforeUpdate:function(){
                showData(&#39;数据变化更新前&#39;,this);
            },
            updated:function(){
                showData(&#39;数据变化更新后&#39;,this);
            },
            beforeDestroy:function(){
                vm.test ="3333";
                showData(&#39;vue实例销毁前&#39;,this);
            },
            destroyed:function(){
                showData(&#39;vue实例销毁后&#39;,this);
            }
        
        });function realDom(){
            console.log(&#39;真实dom结构:&#39; + document.getElementById(&#39;container&#39;).innerHTML);
        }function showData(process,obj){
            console.log(process);
            console.log(&#39;data 数据:&#39; + obj.test)
            console.log(&#39;挂载的对象:&#39;)
            console.log(obj.$el)
            realDom();
            console.log(&#39;------------------&#39;)
            console.log(&#39;------------------&#39;)
        }        </script>

  那接下來看看效果圖:  

  透過控制台的列印效果可以看出來,實例化vue 物件大致分為建立vue實例、掛載到dom、資料變更更新、vue實例銷毀4個階段,,注意每個階段都有對應的鉤子,我們可以透過對這些鉤子進行操作,達成一些功能。雖然初學者用不太上,但是事先了解一下還是好的,到時候碰到實際功能要能想得到生命週期的鉤子。
  ######3. Vue 的 所有 資料綁定指令######  那現在我們就總結一下 vue 的最大亮點,各種靈活的資料綁定方法。這裡主要列舉實例詳解  {{}} 、 v-once 、 v-html 、 v-bind 和 v-model 。 ######  ######(1)######首先是  {{}} 、 v-once 、 v-html 的用法,請看下面的程式碼:######
nbsp;html><meta><title>数据绑定篇</title><!--数据绑定篇--><div>
<!--1. {{}}    v-once    v-html--><!--Mustache 标签,也就是双大括号,刷新页面时会显示出双大括号--><button>点我,改变变量message的值</button><br><br><!--即时绑定,div的内容随变量变化而变化的,绑定内容作纯文本处理--><!--双大括号里边也可以写表达式,和AngularJs一样的--><div>{{message}}</div>
<br><!--只绑定一次,整个div的所有绑定数据,都只会加载一次,再更新就不会变了--><div>{{message}}</div>
<br><!--双大括号只能当纯文本显示,v-html 可以直接绑定HTML标签的--><div></div>
<br>
</div>    <script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",            //我们实例化的 app1 的挂载的 元素节点,一般用 id,class,或者tagname也可以,但是多了会冲突            data:{
                message:"我是变量message的内容!",
                h1:"<h1 style=&#39;color: fuchsia;&#39;>我是h1标签",  //注意单引号//message改变函数                func:function(){if (this.message == "我是变量message的内容!") {this.message = "message的内容改变了!";
                    }else{this.message = "我是变量message的内容!";
                    }
                }        </script>
###

  然后看一下效果:

  

  还是分析一下这个小demo。

   div>{{message}}div>  Mustache 标签,也就是双大括号,他和 AnjularJs 的双大括号完全相同,就是直接将数据动态绑定到标签中,当变量发生变化的时候,标签内容也是改变,上大括号里面也是可以写表达式的。上述代码是做了一个 在button中点击改变变量message的值,然后通过数据绑定使div的text即时变化。

  div v-once>{{message}}div> 他也是数据绑定,但是只绑定一次。要注意 v-once是加载div上的,所以整个div的所有绑定数据,都只会加载一次,再更新就不会变了,所以点击 button时,第二个div的数据并没有发生改变。

  div v-html="h1">div> 是绑定HTML标签,注意 他可以直接绑定 HTML模板,但是这一堆HTML标签不能是多层嵌套的。什么意思呢,就是你之间绑定一段标签可以,绑定一个模板也可以,但是如果绑定一个模板,那这个模板内部不能再嵌套模板了。否则无法渲染的。上述代码就是直接导入了一个加了行内样式的h1标签,功能十分强大,比直接操作dom节点强太多了,效率是几何倍的增长。

  (2) 其次是 v-bind

nbsp;html><meta><title>数据绑定篇</title><style>.aaa{margin: 10px;width: 100px;height: 100px;background-color: red;}.bbb{margin: 10px;width: 50px;height: 50px;background-color: blue;}</style><!--数据绑定篇--><div>
<!--2.    v-bind-->        <!--v-bind 他是专门用来绑定属性的 ,主要用来操作元素的 class 列表和它的内联样式--><!--这个和用 js 直接操作dom节点功能一样,不过简单特别多--><div></div>
<!--还可以直接绑定更改 class-->                <div></div>-------------------------------------------------------------------------------------<div><img  src="/static/imghwm/default1.png" data-src="mySrc" class="lazy" alt="Vue.js 基礎指令的詳解" ></div>
</div><script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",    
            data:{
                myColor:"blue",
                myWidth:100,
                myHeight:100,
                myClass:"aaa",
                mySrc:"img/2.png",
                func1:function(){if (this.myColor == "blue") {this.myColor = "red";this.myWidth = 50,this.myHeight = 50}else{this.myColor = "blue";this.myWidth = 100,this.myHeight = 100}
                },
                func2:function(){if (this.myClass == "aaa") {this.myClass = "bbb";
                    }else{this.myClass = "aaa";
                    }
                },
                func3:function(){if (this.mySrc == "img/2.png") {this.mySrc = "img/u=1622626696,1630096734&fm=23&gp=0.jpg";
                    }else{this.mySrc = "img/2.png";
                    }
                }
            }
        });        </script>

  然后看一下效果:

  

  那我们解析一下上面的代码。

  v-bind 他是专门用来绑定属性的 ,主要用来操作元素的 class 列表和它的内联样式。这一点和AnjularJs的 ng-bind 是完全不同的,要注意!!!

  div v-bind:style = "{backgroundColor:myColor,width: myWidth+'px',height: myHeight+'px'}" onclick="app1.func1()">div这是在直接绑定行内样式style。然后通过绑定点击函数,为各个比那两赋值,达到点击更改div样式的目的。

  div v-bind:class="myClass" onclick="app1.func2()">div>  这个是直接绑定修改 class类名,在页内样式表中有我定义的 .aaa 和 .bbb 两个类名,通过动态修改class名修改样式,这也比 JQuery 直接操作dom节点快捷不少。

   img style="width: 100%;" v-bind:src="mySrc" onclick="app1.func3()"/> 这是直接绑定属性,动态修改 img 的src 属性。达到点击图像显示不同的图像的效果。

这里要特别强调一下,v-bind 直接绑定的是属性,而不是样式 ,对于 img ,他的src是属性,但是对于 div ,width 啥的是样式,不是属性,所以 v-bind:width="100+'px'" 不好使.

  至于 v-bind 属性绑定,也就常用用法也就这么多了。

  (3)   v-model

  用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。v-model 并不关心表单控件初始化所生成的值。因为它会选择 Vue 实例数据来作为具体的值。在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步

  下面我们看一段代码:

nbsp;html><meta><title>数据绑定篇</title><style>.aaa{margin: 10px;width: 100px;height: 100px;background-color: red;}.bbb{margin: 10px;width: 50px;height: 50px;background-color: blue;}</style><!--数据绑定篇--><div>
<!--3. v-model-->    <input><div>{{ myText }}</div>
<br><br>-------------------------------------------------------------------------------------<!--绑定单选按钮--><input><label>男</label><br><input><label>女</label><br><span>您选择了: {{ picked }}</span><br><br>-------------------------------------------------------------------------------------<!--绑定复选按钮--><div>
<input><label>好帅!</label><input><label>你是我的男神!</label><input><label>我爱你,飞哥!</label>
</div>
<br><span>您对飞哥的评价: {{ names }}</span><br><br>--------------------------------------------------------------------------<!--绑定单选列表--><br><select>  <option>亲飞哥</option>  <option>向飞哥表白</option>  <option>请飞哥吃饭</option></select><br><span>真心话大冒险: {{ selected1 }}</span><br><br>------------------------------------------------------------------------------            <div><select>  <option>亲亲</option>  <option>抱抱</option>  <option>举高高</option></select></div>
<br><span>你想和飞哥偷偷干些啥: {{ selected22 }}</span><br>
</div>
        <script></script><script></script><script>//通过Vue.js的构造函数 实例化出一个根实例var app1= new Vue({
            el:"#app1",
            data:{
                myText:"",
                picked:"",
                selected1:"",//这是复选列表的变量,函数                selected2:[],
                selected22:"",
                funcselected22:function(){this.selected22 = this.selected2.join(" ");
                },//复选框的函数,及其相关变量                checkedNames:[],
                names:"",
                funcCheckedNames:function(){this.names = this.checkedNames.join(" ");
                }</script>

  然后看一下效果:

  

  然后解析一下这段代码。这里就不一一详细解释代码了,挑几个典型的详解,其他的便很简单了。

  我们就以 多选按钮为例:

  

<div>  <input>  <label>好帅!</label>  <input>  <label>你是我的男神!</label>  <input>  <label>我爱你,飞哥!</label>
 </div>
//这是复选列表的变量,函数
   selected2:[],
   selected22:"",
   funcselected22:function(){
       this.selected22 = this.selected2.join(" ");
   },

  这里要强调一下,v-model 动态绑定这种多选框之类的,会以数组的形式存取,所以,我们用 selected2:[], 变量接收 选择框 的数据,但是我们又不能直接用双大括号显示数据,朋友们可以试验一下,双大括号是纯文本显示,他会把整个数组的中括号,引号,逗号都显示出来,太丑了。所以这里,我用了JQuery的数组分割为字符串的函数 join(" "),把选中的数据分割成字符串,再用一个字符串类型的变量接收数据,这样打印出来就好多了。注意,这里 join(" ") 我用的分隔符是 空白字符,它占一个汉字的空间,但是不会显示出来。

以上是Vue.js 基礎指令的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。