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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15316|回复: 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">9 y3 \: g, Y8 J' O
  2.   <p>{{ message }}</p>3 k! H+ s$ w: |
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    " U8 u: A9 |  ~) B
  2.     <div v-html="message"></div># H/ u+ p3 r: D' |8 B* h% g+ k
  3. </div>
    4 L% a5 {$ v) G* i3 v
  4.     6 g$ I) U# S3 k- T  A# L
  5. <script>) b) S# Z& ]3 K) j0 @% Z0 I
  6. new Vue({
    6 I/ Y* i4 y6 B3 G
  7.   el: '#app',
    - A! v* ]& F8 c. r2 A& g+ e% F
  8.   data: {8 q* m$ N# m6 r  g
  9.     message: '<h1>菜鸟教程</h1>'
    $ c5 g. q/ _0 |' o0 a
  10.   }
    9 v. c. s$ D0 ]
  11. })# Y! I+ {0 C, B& |# v# k- B( U" ]3 W
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    # F0 R: o, P. Z- @8 ]
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">& W5 x% B! s2 p: m) c: j1 S
  3.   <br><br>
    8 T7 A! i" f4 a
  4.   <div v-bind:class="{'class1': class1}">3 `! _% K6 t: i
  5.     directiva v-bind:class' R: g$ t: I2 [8 z) |" q
  6.   </div>; M9 ~  @1 D+ {: N8 P
  7. </div>5 i. \1 v6 _, m3 H# g
  8.    
      l5 |: j. T4 ?' R; B  s, i1 B
  9. <script>  h0 e7 @; l4 Y: @4 j, c
  10. new Vue({
    6 n  {, e# s$ ~( Z  _
  11.     el: '#app',
      K5 [- T  C4 }$ L! j6 n" c
  12.   data:{7 J% r+ A3 q* g! d5 c& J: L
  13.       class1: false
    5 n5 ?7 Q6 @; A# O6 B$ N2 q7 o
  14.   }6 e8 F& l" P2 x1 A/ Y% F. P7 U
  15. });  P) U5 r# ?  b8 \
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">2 v  t5 a) j8 _9 z" Q9 E7 a, P
  2.     {{5+5}}<br>
    / l2 Z  i" k7 l9 H6 a% _: h  U
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    ' h( _# a, ]+ W+ |
  4.     {{ message.split('').reverse().join('') }}: D/ L$ v9 v: p- f- [! T
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>& n# [0 B5 Y) y4 \
  6. </div>
    # T" d& }' E$ S
  7.     9 l$ c6 ~5 ~  S0 a9 D9 F
  8. <script>
    $ W' K) ]/ x! F. S( p7 _: R3 o
  9. new Vue({9 [5 i" N7 \  ^3 l
  10.   el: '#app',- e! H# u$ b7 ?+ c' H" \
  11.   data: {4 t; o* H1 ?) A: y7 a% v% s. X
  12.     ok: true,
    5 a1 T2 a9 m) t) \: ?  i
  13.     message: 'RUNOOB',
    % U# P( g0 F, m! d$ b  ^* ]. |8 b
  14.     id : 1
    4 I; m8 [2 V; z* Q; I
  15.   }$ Y, ]# x0 t5 G  r! ]/ R7 B% s+ R( j3 g
  16. })8 X0 D! W( J4 a! n
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">- d0 X( J* c6 ], B: i
  2.     <p v-if="seen">现在你看到我了</p>1 i, |* _  G* m- Y( V9 y
  3. </div>  ?) u: z2 v# H9 s( J  O: W. E7 d! ~/ e
  4.     * ]7 a% G7 p9 J7 F1 ?
  5. <script>
    ) y6 U4 D3 @/ b; }' W5 w
  6. new Vue({0 L, F3 E. F$ w
  7.   el: '#app',- Z( j% Z/ ?* n5 L; M
  8.   data: {
    3 L2 }5 f) x8 k6 L
  9.     seen: true0 z# r% x6 u% o7 ~
  10.   }3 o  C( O8 y4 l) d
  11. })
    8 i" Z, O. m2 `; D# ]
  12. </script>
复制代码

( C. g, R, j$ y
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">9 {0 q$ }6 M' K( j& U$ B" s
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>4 y. T% m( k& Z0 ]/ ]# ]0 R
  3. </div>
    ( j8 a  x2 h  ^3 r4 Y4 r' u% |8 h- O1 `
  4.     : A0 q# H6 W) R& t) a  E, t- K4 }
  5. <script>
    " Z* P9 L& l  j" Z7 Y( ^
  6. new Vue({
    4 F, Q5 g6 Y* G* `3 z' @! k4 g  i
  7.   el: '#app',
    1 G+ N6 y5 J3 |  g5 W
  8.   data: {& [* Y/ l: x; B4 H
  9.     url: 'http://www.runoob.com'+ p* O) Z& s+ ]! M4 @
  10.   }
    0 L% a1 _, B1 r& o. X# ]
  11. })8 q$ r- n  g6 }0 J: O/ k7 D
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
3 F# F. g: }+ x4 q6 T2 H
  1. <div id="app">8 t& |; y7 H2 l& P# D* C
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>( k" g- Q* M) B, m) D

  3. ( y, y, l+ `+ K# u
  4. </div>- c+ y, r: Z/ [
  5. + q0 }$ b: P2 x' R+ ^9 P+ A+ d
  6. <div id="app2">" o' W+ R! m. k8 c
  7.    <p v-for="val in arr">
    1 j% E5 a+ Z; P2 r. v% g; E5 I- B* u
  8.     {{val.a}}5 N9 l4 S8 Z5 ^
  9.    </p>1 V7 H; C5 f4 E6 Y9 C$ i! z
  10.    <a  v-on:click="tap">点我</a>
    " L% F1 Y9 ~2 A0 d, E4 ?/ M
  11. </div>+ b/ m' I" x# M; i8 E
  12. ; G/ [2 b# [: Q2 S+ F

  13. " a" X9 Z" [1 w: p7 Z
  14. <script>
    7 ?: C& u( x- h/ G
  15. new Vue({
    ! `( D# }3 B4 q$ l4 q( V2 O; _
  16.   el: '#app',
    ( H' @5 ?$ f: ~# ]1 N
  17.   data: {3 Q% Q$ E1 i; G7 z" v
  18.     url: 'http://www.cncml.com'3 O. d2 _, z) w+ [/ P4 F3 T7 @
  19.   }
    - f2 H/ w. L5 S3 D
  20. })
    : J, A4 }/ m* n7 K8 V+ N8 J
  21. new Vue({
    ; ]6 X/ }, B7 b3 R8 X' Z0 C; J7 {
  22.   el: '#app2',- L# k, f, |* W/ b! S( ]
  23.   data: {
    9 y0 E5 A( A* e& s: J
  24.     arr:[
    ; m" k" z# L# h  J  E
  25.      {a:'bb'},
    9 i: ^8 {5 @+ N6 s; e
  26.      {a:'cc'}
    + q: h- T. c9 t9 }
  27.     ]* O7 e/ T$ J8 d6 p0 ]4 }; r$ N
  28.   },1 E; k+ e- Q3 a' L. U) D
  29.    methods:{" n2 k& @& I) M1 q) J
  30.     tap : function(){; H. j  d6 L$ N. M2 H
  31.      this.arr.unshift({a:'new'})- Y7 j4 f' O, F, X$ S6 `, [: _( s+ l
  32.     }
    " F' ~. j! C& Q1 K; g
  33.    }" o) |- o: I+ O' v/ v, q% o
  34. })% Y0 `  u7 D2 {
  35. </script>
复制代码

: g, C: d5 y5 m/ `' C3 d9 {
) r% N- @- j0 k  W% u# \
在这里参数是监听的事件名。
5 F% S& \5 P9 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 13:34 , Processed in 0.055067 second(s), 22 queries .

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