您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14887|回复: 0
打印 上一主题 下一主题

[Vue.js] Vue.js 模板语法

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-1 23:16:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Vue.js 模板语法
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。
Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。
结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

插值文本
数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值:
  1. <div id="app">
    0 W& D3 i1 O$ A+ u& L; ~
  2.   <p>{{ message }}</p>
    5 O5 O$ ^% u" P! @
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">. H2 q  B0 ~8 U, M
  2.     <div v-html="message"></div>
    5 Z1 \( ?! _2 X: m! A
  3. </div>
    , w# w) P: i# Q+ l) N! s& U. ^4 a
  4.     # I( F6 p" p4 Y3 }
  5. <script>
    - ?- T# I) K% v( @/ t% E
  6. new Vue({
    ' c( }! |0 |- n: s/ e0 ~3 R9 v
  7.   el: '#app',
      @9 M( t! k8 ^; C# Z( ]6 ~7 A& {
  8.   data: {8 \3 U1 S( a$ p4 n! g6 B
  9.     message: '<h1>菜鸟教程</h1>': a6 R' ]  z' Y4 J
  10.   }0 S1 c" u. _- S5 w" J6 L/ R- W' u
  11. })- K7 Y! Z* Q8 f3 h6 b3 g: I' Z) b1 s
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">* \0 X: n7 O' J9 R& ]& |
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">8 a  I1 t* y9 B9 }
  3.   <br><br>8 @0 Z' X) H2 n7 Q
  4.   <div v-bind:class="{'class1': class1}">4 p1 |: N" i3 f3 g
  5.     directiva v-bind:class( p* [# q  \- Q  K( n8 B& t
  6.   </div>
    / \' N: u8 U4 f. N7 a, i- U, w" `
  7. </div>
    # O6 |5 P0 j( V9 r6 H- ]
  8.    
    ( g: p( n8 `2 Y3 d
  9. <script>
    : z2 B: m1 Q. t% V9 M) ]0 p: m
  10. new Vue({
    / j+ u2 m) \* X0 O+ l
  11.     el: '#app',0 C2 d4 e  ~4 b( |) w
  12.   data:{
    4 j, F& f0 \7 H8 O; d
  13.       class1: false/ O4 |" h0 i4 y, k0 R3 W* p% e% K( n
  14.   }& L1 H4 m/ o# i4 Z7 ^8 I0 o
  15. });. s7 H8 I% o0 C$ Y
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">! ^; R% x* }) z1 A2 y
  2.     {{5+5}}<br>
    , _( k/ r; n0 g- Y4 Y
  3.     {{ ok ? 'YES' : 'NO' }}<br>  _% @' c  R8 f+ Q3 x
  4.     {{ message.split('').reverse().join('') }}0 I! B% d  f2 A
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div># o8 M: b8 G/ H' H" D/ w
  6. </div>
    6 `2 ^) k( F6 y# A6 [
  7.    
    3 ?, Y" X- D( ]7 G( g0 X4 s) K) _
  8. <script>
    ! R2 m2 u  o/ C, p% M; R0 [! m& G
  9. new Vue({1 f" R5 Z" n) R" `
  10.   el: '#app',
    3 Z4 n1 Y% {  V: e7 W3 X1 B
  11.   data: {
    4 h4 C+ k1 n7 V1 `% N7 \
  12.     ok: true,; N% M& O4 N! t
  13.     message: 'RUNOOB',: Y8 a4 c5 T$ E! U  l4 e' C0 @
  14.     id : 1
    8 u" b" N' P1 i* P# x
  15.   }
    : y- V/ `5 k0 \2 t* W
  16. })! W' e0 s$ s' h1 @* q  g! J
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">8 z5 p( r  [  ?: k
  2.     <p v-if="seen">现在你看到我了</p>
    0 ^" ?% n- ]4 {
  3. </div>
    ) p; v- H* I" f% x3 d' t7 g
  4.     & d4 f. J/ f4 f5 z
  5. <script>
    0 l4 z- d2 M9 |* p0 |4 U% k% _
  6. new Vue({1 x. i7 t) y; g% n8 U8 O
  7.   el: '#app',
    % O9 E7 i# }# b2 s
  8.   data: {, l% X7 N+ I% c
  9.     seen: true
    * e% n$ g9 Q$ S$ m
  10.   }
    & R/ J1 j2 u/ D  ]
  11. })# R7 B3 k  i. C) a  f
  12. </script>
复制代码
, T1 P. C+ U' Z5 ^5 g: y" h& G
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    2 t  X' u3 |9 F; E6 |! {
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    5 u6 I6 j0 v& [, [$ z1 i/ d% U- ]
  3. </div>
      b8 Z8 R- g/ Y' i
  4.     3 M7 Q4 E! L" p  p  R; U
  5. <script>
    , X  d6 r7 R5 Y' e' ]' I7 {
  6. new Vue({
    + }: n( t9 J$ _
  7.   el: '#app',
    2 Z- n! W  q/ X. L
  8.   data: {
    . \4 _+ l( K4 d! i* W
  9.     url: 'http://www.runoob.com'0 F- X% \8 @) s0 T
  10.   }& ~" O, V- e9 Z9 O8 i: ?
  11. })
    1 |6 P3 K- _4 B( S0 k  Y
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

& F0 P' h! f. |, T
  1. <div id="app">
    4 V7 W/ q/ k$ Q) n$ \
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>: ^; F! y+ d4 @0 v8 L5 G1 C9 ^
  3.   m7 n% Q+ c  }$ a! K
  4. </div>5 H: f# l6 W$ j
  5. : G% W) J9 f# v( j
  6. <div id="app2">
    % i: y0 o, K# |5 Z$ |
  7.    <p v-for="val in arr">
    8 R, P8 f  T* o$ `& u. y! U
  8.     {{val.a}}
    7 c; [/ n" A/ b$ b9 x) E
  9.    </p>/ K7 d- x( m$ d4 g, l
  10.    <a  v-on:click="tap">点我</a>  u$ n) ]6 j' n' A' P* \8 c, V4 s
  11. </div>3 L( B5 l8 \9 C/ W2 b
  12. 4 n- X8 P6 O3 u- [; U
  13. 8 [* t1 B' o& p" T
  14. <script>
    - N, P; r7 V+ C+ o+ W8 D& P
  15. new Vue({+ t2 Q; s2 }$ a2 `$ E
  16.   el: '#app',' s# u+ L, p( L8 D9 N2 q
  17.   data: {
    5 I& `4 |- D  z
  18.     url: 'http://www.cncml.com'. e" Z3 Q3 `) |! s
  19.   }2 i# f4 ]- C& ~
  20. })$ k$ V% l9 h* O3 R! t% v* p
  21. new Vue({
    5 x" }+ h' k$ s  l1 n) E$ ]" T. _: s: K
  22.   el: '#app2',
    7 s! Y# d% |6 z) Z# A; Y
  23.   data: {
    & S' `4 ]+ s0 @
  24.     arr:[
    8 T* J# u7 _( Z" M8 g
  25.      {a:'bb'},  s) s" Q9 L! e4 A4 Q( q
  26.      {a:'cc'}7 l# y: H/ c- i% Z
  27.     ]
    / q% E8 M8 @9 W5 q) O
  28.   },
    ' p3 E5 D4 `  V+ ]7 E3 u9 @$ G" U
  29.    methods:{
    , y+ E% q, i2 a
  30.     tap : function(){
    ! d) z/ o3 \- ^( ?4 M% K
  31.      this.arr.unshift({a:'new'})
    ' A2 ^! Z% g- \$ f! W! `  v8 `9 ]7 S
  32.     }
      ~( W9 O& t% r: n$ r2 {
  33.    }+ ~9 ]6 i* Y' D  Y
  34. })% l/ |' _% {, }  m$ K
  35. </script>
复制代码

4 ~6 [8 v8 c7 t3 B6 L6 O  q
; {' W! n: b1 K0 F
在这里参数是监听的事件名。
) G3 G. Y: C3 F$ j0 h  y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:32 , Processed in 0.057110 second(s), 23 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!