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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12448|回复: 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">
      F/ n, L0 c+ L
  2.   <p>{{ message }}</p>
    * d4 r, H/ |& N9 ]7 M# Q
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    # e$ E# p# c1 _' q( X( t
  2.     <div v-html="message"></div>3 i4 b) o& V5 G
  3. </div>
    , G  m: {7 X0 k6 V0 T* J: C
  4.     . O% J$ T3 h: a7 p7 V* p
  5. <script>
    2 D$ E, X1 y* X& y! j  L
  6. new Vue({6 Y* T+ C" M" U+ O  Q; D; ~
  7.   el: '#app',
    . O, d0 t8 |, G
  8.   data: {
    , k& o% T0 b8 s+ A' w
  9.     message: '<h1>菜鸟教程</h1>'
    $ p: q7 N9 n6 o4 _6 N
  10.   }7 }1 q4 c3 A) e+ |, I  C+ V  ~3 W) Z
  11. })
    7 j% \5 n$ F) x! s% B9 ~3 W
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">& |5 F) D( G& x* {  v3 b7 p- ?
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">6 x* P$ K+ g" R$ ]3 Z. m
  3.   <br><br>
    ; q% n8 t' m0 a8 @
  4.   <div v-bind:class="{'class1': class1}">% O0 E0 j* y7 p+ e" K
  5.     directiva v-bind:class
    $ W9 }. [, K; S8 a& f
  6.   </div>
    ! g& S0 |/ l: K8 z1 t
  7. </div>; @, F: ]) O1 `3 }/ s
  8.     % l4 A1 H$ I! |2 G
  9. <script>( o1 r% G5 x9 |; I% o
  10. new Vue({) R6 N( W$ ?9 z% C+ ?4 K5 v
  11.     el: '#app',5 y) D3 }" h, z3 G9 A
  12.   data:{+ J! l4 j7 K! L
  13.       class1: false& e0 z  h& E. l/ G" x$ V$ K$ `  m
  14.   }
    0 J* P$ K# u; h) K- h9 l6 w
  15. });7 O- a$ T. f3 U2 J, ^
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    . q! `( V+ n% J
  2.     {{5+5}}<br>
    0 S: R1 x5 C/ J& V# Y  n
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    7 X' a% P! ?( h5 Y' l
  4.     {{ message.split('').reverse().join('') }}2 t/ f1 D, Q, l) l( f" x
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>  D; e' y; S9 B9 J" C0 `: |" O
  6. </div>( o, t5 T1 u5 l. Q' T, z5 U6 a
  7.    
    & X: A* A9 L- K0 t! l% b
  8. <script>
    ( H, u5 H/ K% g  q5 h9 x5 t" u# O
  9. new Vue({+ ?+ ~8 o) ^6 F) j2 k! A
  10.   el: '#app',6 Q+ V/ Y, C  Z6 \
  11.   data: {
    * _  Z' c9 b9 U+ s( \3 C0 x
  12.     ok: true,
    5 K( V  Q  R& g' E: l4 P" |' v
  13.     message: 'RUNOOB',
    6 _. _5 x/ x7 ~& c' h
  14.     id : 1! ]7 F9 A, Y8 C8 f+ v
  15.   }( M1 e2 [, ?+ G4 y7 U* R
  16. })5 I; V6 d+ r7 q3 F0 |& z
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">2 n5 y* t' w  l* t  u1 k2 f! o2 l
  2.     <p v-if="seen">现在你看到我了</p>
    . O" s$ x6 T; O9 i9 E: u
  3. </div>" _- |$ x7 e. G9 ?' Y
  4.    
    $ T# p: u; |5 R8 _1 z: \7 S
  5. <script>4 {+ L% a% q, B$ Y/ s. M
  6. new Vue({' M& _1 t1 y1 G' l
  7.   el: '#app',$ }; a- }) ^- m- N) w9 X4 {: Z4 Q
  8.   data: {
    ) y6 ?5 A/ B& |5 k- O
  9.     seen: true
    # @- d8 a3 M* H! P$ b% R6 e
  10.   }
      v! r+ K7 e$ J) ~4 |% s# ?+ R- [
  11. })) p; l' S+ }' V" t* V
  12. </script>
复制代码
8 b: c4 J* l" d, K7 l" H" s3 {4 A
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    + Y4 b( D  T/ o
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>4 s! `$ g# x5 q
  3. </div>$ \. y% N" f; X) h
  4.    
    6 m/ \9 X6 Q% V! `
  5. <script>' q6 C3 }( @. Q* k! z
  6. new Vue({
    1 {" y& l0 a* V
  7.   el: '#app',
    # F) p6 O% c+ T- E1 n
  8.   data: {3 h( G: D. ^- E" Q
  9.     url: 'http://www.runoob.com'' ^$ {, H' G' M3 b+ Q' `; X; E
  10.   }7 A  H# s8 s% M1 D/ J! V
  11. })6 t2 L. r$ p! c6 m8 h
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

& z+ V9 c" T) S: }) S3 |
  1. <div id="app">
    . ~$ |5 @; h8 o. `$ v
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>9 {6 ^' A) U1 M. h# J5 ^& [( V# M3 m
  3. ' u0 _' W% a* P2 A) M2 t* C7 ^: O
  4. </div>: l, P: D. w% ^- c. \

  5. + O# N! z) q: X, k
  6. <div id="app2">
    $ v4 g' J" |+ ~8 y
  7.    <p v-for="val in arr">% d  c* {3 n1 i) l! Z- u. x4 j
  8.     {{val.a}}2 h; M9 I" o- Y; j- \
  9.    </p>; z# D7 z; {- J  q
  10.    <a  v-on:click="tap">点我</a>* Z! W2 H+ B9 }' O5 i
  11. </div>8 T( l+ k& `! s! S- w4 L( T7 D8 Y

  12. % V$ m1 K/ ?4 G/ A  M

  13. ! f! c  W9 O* Z6 H( G) C7 T  }+ P
  14. <script>9 ~( ]% m, \0 Q' x7 z2 t- U
  15. new Vue({
    , G: W, F; q  \, B+ F5 E% r/ z  P+ _- L* _
  16.   el: '#app',
    6 L/ R) j2 k9 u" w
  17.   data: {
    * p! ]5 `9 N/ x
  18.     url: 'http://www.cncml.com'
    ) f! C  R6 D1 y. b. k# l3 \; j' {
  19.   }$ f3 J, h+ ?0 m
  20. })
    ( y9 e  l5 G4 Y, v
  21. new Vue({
    3 L3 L0 T& ^; N! k+ q
  22.   el: '#app2',8 [- G; L, z6 f; h
  23.   data: {" s6 [1 `9 B# X. T
  24.     arr:[
    4 P, m8 ^1 M4 o$ Z5 |
  25.      {a:'bb'},
    ' V% e! B9 X3 J5 A
  26.      {a:'cc'}
    ; I7 O" f% p. `4 _
  27.     ]
    ) R' t4 p- X' ?
  28.   },
    7 A7 J% \4 p7 H* A- d
  29.    methods:{
    1 R* D. q& ~3 w9 i
  30.     tap : function(){
    $ d. b: _- z2 B* C
  31.      this.arr.unshift({a:'new'})
    4 P$ v: e; C& E; P  l+ i7 o. B
  32.     }4 W- V" S( O3 L0 a( S" _+ Q% u: T
  33.    }1 q# L6 f2 W4 D1 H, v
  34. })
    * U: D8 S' \  }
  35. </script>
复制代码

; C: R+ I) R, \& @0 [& y$ w1 b

4 g2 D3 f) v2 q. Y& x* [2 C
在这里参数是监听的事件名。

4 D5 ~5 s; h( L$ b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 10:49 , Processed in 0.110356 second(s), 23 queries .

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