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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14874|回复: 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">8 I" X# y* P4 x' ~& u/ r' d; z. D
  2.   <p>{{ message }}</p>0 J; f0 d  e& V. V5 k/ v% J
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    ) l7 P0 T7 Y& f) [$ \
  2.     <div v-html="message"></div>9 I5 g: S+ S- e1 g! T
  3. </div>) i1 I; m7 D3 V, R- r
  4.     0 q$ t& n5 A  j' V: K3 R* z5 D3 Z
  5. <script>
    - N- N8 i4 B5 Y2 U% T0 [/ ]
  6. new Vue({9 _9 [, h/ m) e: B- N( @/ K1 P
  7.   el: '#app',$ g9 `4 `% j1 D9 w
  8.   data: {% }& N8 J( N( @7 u6 T/ q/ m
  9.     message: '<h1>菜鸟教程</h1>'
    + U) T' D2 g- F1 [, o6 h
  10.   }
    " z' G6 T# P2 i* p3 Y
  11. })) @3 x8 Q8 [) H, [' x3 ~8 J/ ^6 ]- J' W
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    , G- V1 i* H+ D  S
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">% f5 d( f: H% z" h; W
  3.   <br><br>
    7 U* Z; S5 N7 l- u( h
  4.   <div v-bind:class="{'class1': class1}">
    5 P; M3 R1 D2 U4 n7 ]
  5.     directiva v-bind:class: G5 d2 r% L2 L# d9 A3 C2 D% o/ b
  6.   </div>2 [* c- K! S% b
  7. </div>
    2 f$ M( X/ o1 F! z$ E
  8.    
    $ ^+ [( I- y5 ^$ o  K+ F( n( o4 j
  9. <script>/ Y- W: W/ v4 e8 u' K4 _4 D' y8 W
  10. new Vue({; U6 w7 i8 H! \/ v  C! j
  11.     el: '#app',' V8 }9 @% x1 X3 U* K' }
  12.   data:{8 T+ H1 z3 @9 R/ P7 t6 T) N6 M! L; F
  13.       class1: false
    8 ], F. @7 [0 k: M5 J
  14.   }( s( |# D7 ^8 c" N5 t
  15. });5 n  [9 p& O" _# \) e
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    7 R3 ~" f& a/ n
  2.     {{5+5}}<br>1 T' E' Y3 B: h
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    4 M6 A! a  _4 Q, O% Y
  4.     {{ message.split('').reverse().join('') }}
    % z3 |. V/ ~% q% q
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>9 m9 `7 N' B/ F4 _, L# c
  6. </div>
    6 J$ ]& T4 N& ^/ n
  7.     ! b( H1 s7 Y5 q' `9 L
  8. <script>, w5 l$ D" u$ ^4 r( `2 G
  9. new Vue({3 N0 w/ C+ |7 m/ G) G
  10.   el: '#app',& V) w, n3 ^/ h7 ^) V6 \4 T4 v
  11.   data: {
    ! ]7 ^, B1 n/ C# I
  12.     ok: true,/ p' W( M0 C7 W- G- t
  13.     message: 'RUNOOB',1 S1 H0 @8 n, }; p3 p. ?- _
  14.     id : 17 I. X  f4 |; D
  15.   }1 n6 }1 f$ M6 r6 q1 D
  16. })
    * x5 S- A4 j9 O9 X
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    5 {. @0 ^2 |7 {: r/ i% W
  2.     <p v-if="seen">现在你看到我了</p>
    $ `: V- q9 W5 B9 v1 j/ r4 e; }
  3. </div>7 [! N: }; g* [( T
  4.    
    $ a+ P$ Z% j8 a, ?" y/ V# M  `( A
  5. <script>
    # X, s# n8 }1 h' ?8 `( @8 l! s
  6. new Vue({7 n1 L& X; J& b- t( r) Y( L" ]
  7.   el: '#app',8 J$ e' r! r! \3 R/ r, w- B- ?
  8.   data: {
    7 _; G  R3 ?/ ~$ Y9 i8 J
  9.     seen: true
    6 |, D. X0 S" v; N) t, \9 p, W3 P
  10.   }" Z" V2 m, j5 E' [+ I& T
  11. })
    , `# ~' l4 D% L& C- ]: I2 X8 H
  12. </script>
复制代码
0 }% p+ v5 U: F' ^( z0 ^
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">. A2 n0 a! Y- y8 T' m
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>0 d% i; v& r/ X9 \4 a. l" |6 `
  3. </div>
    + H( Z" a; C( a6 U9 z
  4.    
    0 q: @( ]9 N) H8 Y  k. T8 J
  5. <script>  `1 {, r4 Q9 ^: g0 U/ n* i
  6. new Vue({1 n0 x; Q) N  R+ Y: F4 F2 }: l
  7.   el: '#app',
    % n4 o7 B8 ~( j! p; j2 k
  8.   data: {
    $ x! O" D# @7 D. {9 Y$ M7 n
  9.     url: 'http://www.runoob.com'
    : h4 C- f8 J, Z; u* B$ j) @& P
  10.   }1 S5 q* p5 y% q' J
  11. })
    " `% F) X+ S- m# C- Z
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

. S7 p: m, T8 K+ i& r! B
  1. <div id="app">* ]: t6 z4 f5 |4 r$ o. p# L
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    ' S. ]; A/ _$ C3 c, y- \, g
  3. , |0 S! s$ a8 @5 O5 d
  4. </div>
    2 v6 e! f* Q% d6 w; _, B
  5. ) O2 V1 _, r6 b  f: e
  6. <div id="app2">! T7 @( }, j+ q# }' x
  7.    <p v-for="val in arr">* L6 e0 a* b: x7 H# R% ]
  8.     {{val.a}}: d7 U1 B& A0 D9 N3 h
  9.    </p>- v: z2 x" b! b9 X7 H
  10.    <a  v-on:click="tap">点我</a>
    . P# J5 X5 |  _- K% [
  11. </div>
    6 x6 s3 H8 ?5 L. o
  12. , `* ~2 T+ [: v) x& g* g
  13. - u% d$ c" Y9 X( X$ l
  14. <script>3 Q9 K0 E2 y9 U3 J
  15. new Vue({
    # x8 x* N! T! u. l8 d
  16.   el: '#app',& D. P7 g$ @, I7 M# j& C7 A% \
  17.   data: {" x, a$ \- |3 M3 e
  18.     url: 'http://www.cncml.com'
    3 }( ?( S8 P( d* H; i$ R  u
  19.   }& s' e! t0 F9 I. M
  20. })% _7 E: m$ p# L  p
  21. new Vue({. \) s" X1 E0 E( v3 J8 A  L
  22.   el: '#app2',- d$ I) E$ u6 q4 s
  23.   data: {
    9 L) t- S8 K9 x# c5 _# s; G
  24.     arr:[  n! s- O" n9 i/ h% h: L$ ^) Y
  25.      {a:'bb'},! e$ ~, H7 m3 r, O& q8 [
  26.      {a:'cc'}5 f7 ^& f2 I- s! h, t' q
  27.     ]; @( D& j* u& Z  h4 T0 B2 P' z
  28.   },: D/ {$ x" Y4 I3 ~! h: g
  29.    methods:{$ ~* P" @9 _! \' w
  30.     tap : function(){
    % d& y; q7 \" w+ k% j
  31.      this.arr.unshift({a:'new'})
    8 F3 x4 L- w1 [: B* e+ ^$ H
  32.     }% I9 ^& `) ^  f, M. e1 Z- o8 o3 N
  33.    }
    ( c# l+ e3 |7 P- W
  34. })" j2 I) l2 V* y3 C: ^- ]" q
  35. </script>
复制代码
' [5 [" c+ e" w. X$ k9 a; g
0 T- a' T; n' `
在这里参数是监听的事件名。

7 C4 y$ _0 ]; r; m  I5 |7 D- \$ W$ y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:28 , Processed in 0.063301 second(s), 23 queries .

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