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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15015|回复: 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% P' R* y' V) u5 @1 \
  2.   <p>{{ message }}</p>- y) c) e3 o) J
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">- c- x+ h1 W2 s& K# \
  2.     <div v-html="message"></div>
    0 `3 U# Q( e& t" Y9 b& f* {5 t" c" `
  3. </div>
    ! [0 a6 l6 c- C" f" U
  4.    
    * |4 ?- t" L  W
  5. <script>/ @, ]. k0 |- D( M
  6. new Vue({
    ) F' {1 ?5 Y- Z; H7 N' u7 ]: D
  7.   el: '#app',0 @1 M" N. ]" ^, a! W( J. L) s
  8.   data: {, Y9 Y' f+ Y4 |1 t
  9.     message: '<h1>菜鸟教程</h1>'4 S" l: y+ {) G7 ~. M. I
  10.   }  ~+ v5 E$ I- c, r
  11. })
    + e& h' a: S  F0 ?# W5 V# J
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">; a+ K# n- Q3 W2 N) g) ^
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1"># r$ {) P9 ^  V' }
  3.   <br><br>
    3 B: i, a  ^  N/ t* ^! c  E
  4.   <div v-bind:class="{'class1': class1}">
    - |! B9 ^, B* }- W! E2 Y
  5.     directiva v-bind:class
    : g+ r8 W2 B, q: O9 V# e
  6.   </div>
    ; G+ G* v+ J+ R4 }9 p# V3 ]: ]( S
  7. </div>
    3 N6 ^5 h/ Y& j% [& H
  8.    
    4 b3 l, @$ {8 R/ [( N4 R/ K6 S
  9. <script>
    6 h" a* e6 x5 C* U
  10. new Vue({
    5 a4 [8 K8 v, Q
  11.     el: '#app',9 t/ e: z$ ?! w5 v$ u" M( @
  12.   data:{6 {9 O( N9 y8 X6 P9 n
  13.       class1: false5 k+ a& Z1 f8 O* Y0 D
  14.   }$ g8 g1 s( D7 ?. G" X5 {; s+ y/ O
  15. });
    3 j: P( j# k3 X3 v6 H
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    7 g& E' }$ n5 Q" \8 R# f4 y4 y
  2.     {{5+5}}<br>" V' I. y* D$ f+ U
  3.     {{ ok ? 'YES' : 'NO' }}<br>6 g4 u8 z" [, `- q6 j
  4.     {{ message.split('').reverse().join('') }}4 N; U- r! d: R  h1 A; |
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>9 ~7 L8 H5 O+ m8 Q. Y
  6. </div>
    1 B+ [1 g" `& D; O! H( q+ r
  7.     6 I4 w/ p, p6 n0 ?; c9 z& h6 [
  8. <script>3 ?2 M6 t( Q' y  }  y' h
  9. new Vue({
    ' y7 }' M8 N3 Z# t2 G
  10.   el: '#app',- t6 k. J" S+ j% v
  11.   data: {% F5 W7 ?2 R% Z. c! M/ t
  12.     ok: true,, F$ Z$ J1 L6 _  B  X
  13.     message: 'RUNOOB',* P( K5 I" w2 Q2 Q" I+ H1 }, j0 W
  14.     id : 1
    : h3 z- p! k/ U/ N+ w
  15.   }2 y9 W6 ]3 ^3 P: O% ]" R1 v6 L
  16. })
    " ]2 R) {$ b4 [+ Y) [4 A
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app"># D) G+ [" ?" O9 R
  2.     <p v-if="seen">现在你看到我了</p>
    3 @9 y9 f% R: T8 v% J
  3. </div>
    3 B. N# n: {& v
  4.     2 \- V4 l( U; V' `
  5. <script>& s( i$ P* s8 N4 r4 [* `
  6. new Vue({! C2 r7 P$ i9 t% ?) V, [  L
  7.   el: '#app',3 u" n: _" v- I  y; n
  8.   data: {
    ' |. @- ^3 _4 B+ ?3 {
  9.     seen: true
    & s4 Z! E& n) ]+ o9 b* F4 F- m  M
  10.   }
    3 `1 e4 N9 K3 v
  11. })
    : u+ Z. }9 U7 T5 r1 G; E: ^! p
  12. </script>
复制代码

) M. v. r4 L: C. V- n: L
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    6 [  j' U3 h2 U2 n9 r
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    4 D( ^, I. n& H& K* g( E# k
  3. </div>
    2 B2 q; `$ c# o: a" a
  4.    
    % O# g9 k1 T- u; k3 ?! p8 u! o
  5. <script>
    - l" Y5 h( |: T; p9 E, o* ^' y) Q
  6. new Vue({3 _& B! W7 Q7 N
  7.   el: '#app',
    & U+ T/ c+ a' _' f" a
  8.   data: {
    0 k( h% ~/ X( H/ i+ ^' m
  9.     url: 'http://www.runoob.com', b% e- \& f8 G% [3 p$ ^/ B
  10.   }
    " Q6 {" ^( ~& g7 O  e5 M4 F8 f
  11. })
    " G, d1 k& |/ h$ Z( a3 R( i
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

+ H4 o: P6 P& `, ?$ N
  1. <div id="app">( U1 G5 A2 |& z( a6 f8 g
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>+ m; A" z+ T8 P& Z. u* r

  3. - s' O# \+ {/ }. q% \& |
  4. </div># `8 d" u1 O2 G

  5. 3 i+ ^1 S- _; H5 h; e
  6. <div id="app2">
    , y" e0 X& r4 J& L: N8 \
  7.    <p v-for="val in arr">7 U4 L1 P# Z' a. c+ e0 z
  8.     {{val.a}}
    / T4 k( d5 B0 b
  9.    </p>/ {, V& c8 Y1 t) u
  10.    <a  v-on:click="tap">点我</a>
    # ?) S) `5 |% m/ m( S# r
  11. </div>
    / v5 I9 j, E, O3 |
  12. . o, c$ x  h6 }& U# e4 Q6 Q
  13. & O! `, P; G; v& E& e
  14. <script>
    7 l2 U% a" ?$ a9 _; N$ k
  15. new Vue({1 K7 J+ x* r6 ?! A, i# {# w2 a- |: T
  16.   el: '#app',
    % F: q' ^# O) y9 M/ i8 s
  17.   data: {
    ! L0 d6 {2 p- L
  18.     url: 'http://www.cncml.com'3 K" q, f6 ?, Q6 I/ q
  19.   }
    . k7 D6 W4 ?2 j0 ]4 |  @; ^
  20. })
    , o0 @# [# q: C0 w3 p! P2 e
  21. new Vue({
    , C' E% O! ^' b" N
  22.   el: '#app2',4 G8 y+ m  J" P2 I1 h  {
  23.   data: {
    3 Q: B, v8 h8 m8 Z% O) g
  24.     arr:[* m' N& q( f  @. ]# i. l
  25.      {a:'bb'},+ t4 g0 A/ H2 n) Q1 a/ L& S
  26.      {a:'cc'}
    . x9 m6 I4 ~: ^( W8 a" j/ J
  27.     ]
    . L! u" i& V5 A4 ]; }
  28.   },
      c4 O' j  ^% M: q1 W# h
  29.    methods:{
    3 k: L* x; ]5 u1 f4 G
  30.     tap : function(){% g* `7 d) F% H3 y4 b# t
  31.      this.arr.unshift({a:'new'})
    $ B; ?* W! C2 I! P- |9 ]5 R
  32.     }
    ) h6 \  W  ^  c$ {
  33.    }  G9 x- A0 l( |4 @6 E* E. R4 s- L; S0 j8 |
  34. })
    - q/ }( p$ q5 y" x  ], I
  35. </script>
复制代码
$ F" h! k2 V# A0 G& w# E" i
( r3 m" U7 m: ]0 P% i/ q
在这里参数是监听的事件名。

: c/ V4 H5 [% ]* k* j" O0 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:53 , Processed in 0.060027 second(s), 22 queries .

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