本篇文章主要介紹了Vue.js學習筆記之常用模板語法詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
本文介紹了Vue.js 常用範本語法,分享給大家,具體如下:
##一、文字渲染
Vue支援動態渲染文本,也就是在修改屬性的同時,即時渲染文本內容。同時為了提高渲染效率,也支援只渲染一次,即第一次渲染出文字後,文字內容不再跟隨屬性值的變化而變化。 即時渲染<p class="row"> <h2>文本 - 实时渲染</h2> <input type="text" v-model="msg" class="col-md-2" /> <span class="col-md-">{{ msg }}</span> </p>
一次渲染
<p class="row"> <h2>文本 - 一次渲染</h2> <input type="text" v-model="msg_once" class="col-md-2" /> <span class="col-md-" v-once>{{ msg_once }}</span> </p>
##
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", data: { msg_once: "once..." } }); });
頁面第一次載入完成時,頁面顯示once...,當span 標籤加上v-once 指令後,無論如何修改文字方塊內容,頁面內容都不會變化。
HTML程式碼渲染某些情況下,頁面需要動態的插入一段HTML程式碼
在vm 物件裡新增屬性,屬性值為一段HTML程式碼
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", data: { html: "<span>This is a html tag.</span>" } }); });
指令後,元素對應位置將顯示出屬性值內的對應元素
<p class="row"> <h2>文本 - HTML</h2> <p v-html="html"></p> </p>
二、表達式上文已經介紹過的
{{ msg }}就是一個簡單的表達式。除此之外,還有一些常用的表達式寫法。
在上述簡單表達式中可以使用運算符,Vue會將運算後的結果渲染在頁面上
<p> <h4>运算表达式</h4> <span v-pre>{{ Number(number)+ }}:</span> <input v-model="number" type="text" /> <span>运算结果:{{ Number(number)+ }}</span> </p>
在文字方塊中輸入數字,Vue透過表達式內的運算子即時計算結果,並顯示出來。因為文字方塊內容為字串,所以在表達式中需要對 number 屬性進行類型轉換成數字。
三元運算表達式Vue支援在表達式內使用三元運算子
<p> <h4>三元运算表达式</h4> <span v-pre>{{ ok ? 'YES' : 'NO' }}:</span><span>{{ ok ? 'YES' : 'NO' }}</span> </p>
表達式內也可以使用Javascript支援的基礎方法,Vue會動態執行方法並顯示最終結果
<p> <h4>Javascript方法</h4> <span v-pre>{{msg_once.split('').reverse().join('')}}:</span><span>{{msg_once.split('').reverse().join('')}}</span> </p>
這個例子是將msg_once 屬性值的字元進行倒序排列後重新組合。
三、過濾器過濾器常用來進行內容的格式化顯示。 Vue支援自訂篩選器
首先要在
vm物件裡增加篩選器方法
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", data: { filter_msg: 'base' }, filters: { filter: function (value) { if (!value) { return ''; } return value + '_filter1'; }, filter2: function (value) { if (!value) { return ''; } return value + '_filter2'; }, filter_arg: function (value, arg1, arg2) { if (!value) { return ''; } return value + ' ' + arg1 + ' ' + arg2; } } }); });
屬性裡,方法的第一個參數值就是傳遞進來需要處理的原始內容,方法的回傳值即時處理過的新內容。 自訂的篩選器使用方法如下
<p> <h4>单一过滤器</h4> <span v-pre>{{ filter_msg | filter1 }}:</span><span>{{ filter_msg | filter1 }}</span> </p>
在上面的範例中,篩選器透過管道符號“ |」與需要處理的內容進行連接,將
filter_msg屬性值經過filter1
過濾器,在後面追加內容並顯示。 同時,Vue也支援連接多個過濾器
<p> <h4>串联过滤器</h4> <span v-pre>{{ filter_msg | filter1 | filter2 }}:</span><span>{{ filter_msg | filter1 | filter2 }}</span> </p>
這個範例中,透過管道符號「| ”,可以連接多個過濾器,每前一個過濾器的輸出將作為後一個過濾器的輸入,直到顯示最終結果。
當篩選器有多個參數時,Vue也支援帶參數呼叫
#
<p> <h4>过滤器参数</h4> <span v-pre>{{ filter_msg | filter_arg('arg1', 'arg2') }}:</span><span>{{ filter_msg | filter_arg('arg1', 'arg2') }}</span> </p>
四、常用指令
指令就是将一些特殊行为应用到页面DOM元素的特殊属性。Vue的内置指令都是一些带有 v- 前缀的特殊属性。
常用的指令如下:
v-bind
v-on
v-for
v-if
v-else-if
v-else
v-show
v-bind
该指令用来给元素绑定一个或多个特性
<p> <h>v-bind(属性绑定)</h> <span v-pre>可用的按钮(v-bind:disabled="!btn_enabled"):</span><button v-bind:disabled="!btn_enabled" type="button">可以点击的按钮</button><br/> <span v-pre>不可用的按钮(v-bind:disabled="btn_enabled"):</span><button v-bind:disabled="btn_enabled" type="button">不可点击的按钮</button><br/> <span v-pre>缩写(:disabled="!btn_enabled"):</span><button :disabled="!btn_enabled" type="button">可以点击的按钮</button> </p>
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", data: { btn_enabled: true } }); });
在上面的例子里,给 vm 对象增加一个名称为 btn_enabled 的布尔属性,在按钮中通过 v-bind:disabled="btn_enabled" 动态给 disabled 属性赋值
页面上可以看到“不能点击的按钮”动态增加了一个 disabled 属性。同时 v-bind:disabled="!btn_enabled" 也可以简写成 :disabled="!btn_enabled" 。
v-on
该指令绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句。用在普通元素上时,只能监听原生 DOM 事件。在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 $event
属性。
在 vm
对象的 methods
属性里添加自定义方法
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", methods: { btn_click: function () { console.log("button click!"); }, btn_clickWithEvent: function($event){ console.log($event); }, btn_clickWithMsg: function (msg) { console.log("Message is:" + msg); } } }); });
通过属性 v-on:click="btn_click"
在按钮上添加 click
事件
<p> <h4>v-on(事件绑定)</h4> <span v-pre>点击事件(v-on:click="btn_click"):</span><button v-on:click="btn_click" type="button">点我!</button><br/> <span v-pre>带事件参数的点击事件(v-on:click="btn_clickWithEvent($event)"):</span><button v-on:click="btn_clickWithEvent($event)" type="button">点我!</button><br/> <span v-pre>带自定义参数的点击事件(v-on:click="btn_clickWithMsg('Hello world!')"):</span><button v-on:click="btn_clickWithMsg('Hello world!')" type="button">点我!</button><br/> <span v-pre>缩写(@click="btn_click"):</span><button @click="btn_click" type="button">点我!</button> </p>
页面效果如下
v-on指令也支持缩写,用@符号代替,比如: @click="btn_click"
。
v-for
该指令用来基于源数据多次渲染元素或模板块。
在 vm 对象里添加一个数组类型的属性 books
require(["jquery", "bootstrap", "vue"], function ($, bootstrap, Vue) { var vm = new Vue({ el: "#app", data: { books: ["深入浅出node", "C#本质论", "编程珠玑"] } }); });
通过 v-for 指令实现一个简单列表
<p> <h4>v-for(循环)</h4> <ul> <li v-for="item in books"> {{ item }} </li> </ul> </p>
页面效果如下
v-for 属性值是一个 item in expression
结构的表达式,其中 item
代表 expression
运算结果的每一项。最终的HTML代码如下
v-if、v-else-if、v-else
条件渲染指令,通过表达式结果的真假来插入和删除元素。 v-if 可以单独使用,而 v-else-if 、 v-else 必须和 v-if 一起使用。
下面是一个简单用法的例子
<p> <h4>v-if、v-else-if、v-else(分支)</h4> <span>分支示例:</span> <input type="text" v-model="number" /> <span v-if="number>10">大于10</span> <span v-else-if="number==10">等于10</span> <span v-else>小于10</span><br/> </p>
页面显示如下
当文本框里输入小于10的数字时,右侧只显示“小于10”的文本内容。
查看源码发现,只有“小于10”的内容的 span 标签存在,另外两个标签被插入到页面中。
同样,在输入大于10的数字时,右侧只显示“大于10”的文本内容。而源码里只有对应的 span 标签存在。
v-show
该指令也是条件渲染指令,但是与上述的 v-if 有不同。这可以通过一个例子来说明。
<p> <h4>v-show(条件渲染)</h4> <span>v-show示例:</span> <input type="text" v-model="number" /> <span v-show="number>10">大于10</span> <span v-show="number==10">等于10</span> <span v-show="number<10">小于10</span><br/> </p>
将上面例子里的指令都换成 v-show ,页面显示如下
从页面显示的结果上看,没有任何区别。但是查看源码会发现,符合表达式结果判断的元素内容将被显示,不符合结果判断的元素将被隐藏,即被加上 display: none; 的样式。
從上面兩個範例比較可以看出
#v-if:動態插入或刪除元素
v-show:動態顯示或隱藏元素
以上是Vue.js中關於常用範本語法的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!