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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14882|回复: 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">4 k) n1 p( ?) c
  2.   <p>{{ message }}</p>
    4 P# L, U. c' ?; k
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    * T3 |9 m7 ]2 ?' I; S+ P
  2.     <div v-html="message"></div>4 Q. A3 @5 S) A# U- H# C
  3. </div>8 s) j: i) I0 S+ q
  4.     * }: z$ c4 C% W6 s3 w: W( z: t, r
  5. <script>
    8 {8 `: q, ?3 i4 M9 \( I/ W3 b- U
  6. new Vue({
    1 g4 J; ^. @+ _! o, {
  7.   el: '#app'," e) i! H& a" i2 S
  8.   data: {8 W, P3 A$ r& g+ b- H7 W" z
  9.     message: '<h1>菜鸟教程</h1>'
    2 e" V. M0 L5 k. O! N+ s
  10.   }$ o/ q3 ^6 J7 R* w
  11. })
    8 S. C" }7 G3 v5 u! Q
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    " A  v: X3 {2 q0 B
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">$ a* b5 f. Z5 A3 J0 J: K: n
  3.   <br><br>
    - Q) S8 |  y+ b! ~) f9 b" `
  4.   <div v-bind:class="{'class1': class1}">
    ( G. D* U" g7 s" U& @3 M' L
  5.     directiva v-bind:class4 [9 N: T  l3 p( A$ Y( T
  6.   </div>
    * i9 ?3 h, C3 C7 r" c1 a- W3 R9 x
  7. </div>
    6 y$ t8 B$ A7 c" X' j0 D# ~
  8.     # F% o. Y- b, Y+ H, S2 F
  9. <script>7 K+ ]) O- A0 ^& K" `/ b) Q  W5 |
  10. new Vue({
    / I0 H& v) f: u2 C$ H4 l1 [
  11.     el: '#app',
      P+ }3 {9 J$ D' l/ Q6 {
  12.   data:{/ K4 F: a) i- C6 r9 J) c+ P2 }/ v
  13.       class1: false
    8 m  Z5 R7 M1 v+ R
  14.   }
    ! b/ T  [- X2 M& v5 `; y5 }# n/ |' b
  15. });( m4 A, j; K, K4 [2 a, h! V
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    : w0 u0 a5 c& y
  2.     {{5+5}}<br>
    ; W+ W6 U8 V; ~. G) L
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    2 ~% j) J) Q7 _! d! ^) g
  4.     {{ message.split('').reverse().join('') }}6 t- n9 a/ b$ N7 t' O( |: P4 O' z
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    " W* O% ~/ [, f& r
  6. </div>+ M4 ]7 ~0 n4 E+ u! R5 B" N
  7.    
    ) e; L$ i/ _3 e" X& J0 ]
  8. <script>
    ) D/ u& n( q6 C& A0 v7 e0 y
  9. new Vue({
    , d! ]. P& C. H$ c6 }2 e( f/ z* c
  10.   el: '#app',
    . G, [# j) y4 w7 D
  11.   data: {
    + N$ g( I: e/ f+ }5 S( T  F' S7 B5 ^5 T
  12.     ok: true,, t0 C6 D3 X$ E. Z" T8 Z
  13.     message: 'RUNOOB',
    3 T/ W. o: s" C* Y0 ~( {
  14.     id : 11 n, y, n& A" }
  15.   }
    ; e+ e% M- E+ }8 N/ \1 q/ q
  16. })
    6 ?- }# o: L6 s7 p  y
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    ; e: T! s8 j! x' v
  2.     <p v-if="seen">现在你看到我了</p>  `- }( T" B: f% @" |* t
  3. </div>- ~$ P+ ^  B2 R1 M
  4.    
    * d( _, U3 w' U$ t1 T
  5. <script>- ]1 ~4 O- `! R
  6. new Vue({: I' O) W+ Q3 Q2 v
  7.   el: '#app',
    : H, A3 _0 T0 o
  8.   data: {) F0 |$ q% f2 y/ L
  9.     seen: true+ e, ?7 Z: r& R; i
  10.   }
    2 l' ^1 i0 B) B8 ~# Y
  11. })' Y/ X1 R) S3 O1 u
  12. </script>
复制代码

1 \2 ]) f; Y2 Q; R5 M8 I
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    0 W- X% F' a& r8 D& {# C
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    4 A+ W- r$ E% ^2 ]/ E
  3. </div>
    ; e* b: f& v* n0 W
  4.     , C5 S/ S8 f$ r2 z: Z( U
  5. <script>
    . |4 ^) W) b$ b) j$ g8 k
  6. new Vue({
    7 t: i7 D$ H; o& ?0 |! {
  7.   el: '#app',
    1 h5 y$ e' L: f
  8.   data: {
    & p3 A9 I# e& F- W
  9.     url: 'http://www.runoob.com'; N2 o) ?+ L# s  O
  10.   }
    2 M0 E7 Q( F4 p  n6 J
  11. })0 }# f8 e- J# I9 H$ a
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

' @( M/ @1 E8 O( W1 W4 s
  1. <div id="app"># f& o- l2 N5 Y% Z7 H
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>& I& Z  [' f8 [, d: U% h

  3. " R6 I. J6 l! ?+ C7 k: q8 g  @5 h
  4. </div># v; d) A2 c8 f1 {& K2 D; y9 N( [3 d
  5. . K, t2 {9 G5 X3 y% g3 S  ]
  6. <div id="app2">1 M& m, ]7 _) |3 A2 ]" ]
  7.    <p v-for="val in arr">7 v5 M3 ?) w6 H  T
  8.     {{val.a}}
    * I( E; f( {8 a8 O5 {
  9.    </p>/ L* l& S2 A( m
  10.    <a  v-on:click="tap">点我</a>1 d2 _2 }% o5 Z+ M6 T
  11. </div>$ ^- s$ u/ X: G3 L8 P) s

  12. + h2 e- B5 |; Y1 ?" j+ @4 I
  13. & {- d, X' x- ?
  14. <script>
    ( Y6 }- e% [! Z
  15. new Vue({# y" S2 F* ?, t1 O* v4 V
  16.   el: '#app',5 I& N, K; |: i4 t
  17.   data: {) H% w% x' B% Y- A& ?0 z& m4 }
  18.     url: 'http://www.cncml.com'
    ) j) L4 [( l, e- l  t
  19.   }# _6 V4 X$ g! {: ]
  20. })' \" w$ _2 V& e! G( n% S$ {' n
  21. new Vue({+ I7 M' K% @8 H0 O6 y7 C( k* X: ^9 F
  22.   el: '#app2',1 _8 U3 ~5 H/ c4 K1 D% F, q, U
  23.   data: {
    , K4 P3 V; A$ \$ x
  24.     arr:[  F$ W* g" x5 e! b) u
  25.      {a:'bb'},
    * @! p8 v5 s1 x3 w
  26.      {a:'cc'}
    . w- d3 m) R- V: E$ J
  27.     ]9 c+ c) e; s1 G2 z
  28.   },  m4 F5 e* T& u4 T2 z4 D
  29.    methods:{0 n5 Z: [) T" E; p* M
  30.     tap : function(){  x/ P$ n9 R* @: t: W6 V2 s
  31.      this.arr.unshift({a:'new'})
      a" w; h& n/ B, w0 B
  32.     }
    . M6 l" G+ U6 g- U1 w) ]
  33.    }& i$ J* C2 n5 h% e/ x3 N) M
  34. })- t- I* i& g. M+ f
  35. </script>
复制代码

$ b/ B7 B! i6 s' j
2 \  _6 ^# E# z" B% N& W
在这里参数是监听的事件名。

( }: z- k( M4 C: x. v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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