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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15971|回复: 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">( N9 ?7 c6 a. D0 K; P. h+ l3 q, P
  2.   <p>{{ message }}</p>
    4 p8 y1 T! g  z# Q+ R8 p
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">6 q6 V( D& H; u3 W' f+ W6 B& w
  2.     <div v-html="message"></div>7 U1 l! o2 V# h, _, d7 p$ [
  3. </div>
    2 m; i% c+ P) r: s9 t6 B
  4.     ( _2 T( A; H( x2 P2 f, \
  5. <script>% b% ~2 J$ U2 X- h  |$ j" h7 |
  6. new Vue({+ C; t" H( p8 I; b4 Z0 ?
  7.   el: '#app',
    : ~( W! x6 t) O+ v4 F) y# G
  8.   data: {# `- G1 h/ X% k- m4 L% q8 O$ Y3 B
  9.     message: '<h1>菜鸟教程</h1>'
    0 x: [4 t  x8 S
  10.   }, N) ]$ u# t  M& v0 M5 s; w
  11. })
    : c" m5 h, A2 @! R, m
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    $ k! |3 [5 s  ]; E5 ]8 r
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 v5 O( s# Y3 [) J
  3.   <br><br>
    7 [. N" T0 O: T+ n  X
  4.   <div v-bind:class="{'class1': class1}">
    ' @( a$ z- [" t4 [' t# y+ b2 @
  5.     directiva v-bind:class! n- h/ e# P: d3 q6 f, m) O  ^7 ?
  6.   </div>8 M# c: s: g& ^  y1 o1 F
  7. </div>3 l' T1 c# C$ }
  8.     . Q' t9 R5 k+ _  @
  9. <script>
    ( N+ i$ B8 p) p+ R$ L& `8 u
  10. new Vue({) G$ R$ K0 m+ n% J
  11.     el: '#app',$ u: ~$ f  X- ?( `) E& W5 ]2 w
  12.   data:{
    2 ?0 _/ }! |3 I2 a0 ^* c
  13.       class1: false/ C9 {  m2 V. F# E6 v
  14.   }+ N3 \6 G1 u* B: w6 |
  15. });
    4 a7 Q& C$ b- L7 O& ^
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    & h8 D# _2 I+ n8 u+ E, J  N& K5 ~
  2.     {{5+5}}<br>
    7 A- ]( ]; ~5 ]- C
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    - v8 X3 \6 p2 c- H) x+ u
  4.     {{ message.split('').reverse().join('') }}
    8 @3 S( d) \  f  E
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>5 N# u! h: U" ]# v( E
  6. </div>" ~' D% Y3 L0 ?2 X" z5 E
  7.     ' o. a  P; z9 s6 X7 }& @' ^5 W: X
  8. <script>3 X( j" b8 [7 c1 H/ K0 D
  9. new Vue({
    & i; {2 `, X  Z2 K0 D6 ^1 d& \2 F
  10.   el: '#app',; i, \& V6 q5 y) _6 D1 d/ O( h
  11.   data: {0 I9 ~+ l& Z4 W: a! Q. i' E
  12.     ok: true,. N# Z0 U# o7 G( w/ s0 @
  13.     message: 'RUNOOB',
    ( X$ `1 T! D9 f% H9 H9 Z
  14.     id : 1
    - l: E$ j3 d3 C6 B# E
  15.   }: _3 }& c% I9 r2 X* g: [9 n
  16. })
    5 b2 `: U: f& c. v/ a9 x
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">& v% C! u9 `# E1 V" B
  2.     <p v-if="seen">现在你看到我了</p># X% Y. M' g3 P$ U" h; j/ O6 f2 s
  3. </div>% j( @4 G2 f" S& l. i/ }+ D8 [+ v
  4.     $ T' X7 \: L* M- x6 J
  5. <script>$ G2 s: d% C, e$ y* a5 V& z
  6. new Vue({3 @* H, R8 c; f$ g6 v6 |% ~) X8 t9 n
  7.   el: '#app'," t: Y! N% j5 y' ~) o, l2 M. j
  8.   data: {# _/ ]8 i6 t* |4 x: c" |0 q
  9.     seen: true
    ' S; F- |: x6 b* Q6 N
  10.   }
    . Z3 u% _- G7 R8 l) I# G
  11. })  u" o) L* v' u8 ^# F( y1 {
  12. </script>
复制代码

& c& f" o* x' g" ?+ Z  X# h3 W# u4 {
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    8 A8 m* r- }) x; v( ^. n; H3 T+ r
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>) j! P9 o8 B5 ?: J4 V6 e) ^
  3. </div>
    5 n# B; L# l+ n2 Q8 L6 \7 h
  4.     / r9 N5 i: V& l- C7 r, p4 }8 J" T
  5. <script>0 x0 B% ]  X& ^2 G
  6. new Vue({
    ; l9 Q6 g5 B6 W7 S
  7.   el: '#app',! j$ w6 \% v+ h5 B
  8.   data: {0 o/ [9 a0 w+ f: w: v4 Z- ^" x
  9.     url: 'http://www.runoob.com'  v7 l- j0 m) u7 @0 R
  10.   }
    : w) D6 F' a4 `' i& P: {, N
  11. })* V. y  Q! O) i7 i: Z3 y- s* W* T  l
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

: {- N1 h- O( B; s0 S: |
  1. <div id="app">
    7 z$ D* n! e. B9 g) n4 G: A# Q
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>* m1 Y, z+ e1 c8 T

  3. ; q3 E9 }: {6 i! R+ r
  4. </div>
    5 i3 H4 f; w8 Q" C; Y; r  I. j

  5. 5 W- s3 _6 t: N1 }& P' E
  6. <div id="app2">
    ' L! {1 G- A- c# Y
  7.    <p v-for="val in arr">* M/ E. w2 ^% C1 R5 |
  8.     {{val.a}}
    ) I- Z  ~: M3 l5 h: v
  9.    </p>% B. u/ C! F; `0 o8 \0 P
  10.    <a  v-on:click="tap">点我</a>$ f4 v, @4 u" _$ Y
  11. </div>
    - @0 u. A+ o1 }8 l
  12. 5 V* w% l& A6 Z! o

  13. # Y  w& s0 P+ K
  14. <script>
    ! w/ }- d  {4 A; h" w
  15. new Vue({
    , Z( }4 K# w, G% f; H$ S2 y
  16.   el: '#app',2 I, Z4 W/ U8 H! B( D
  17.   data: {! H( Z8 t9 X/ O" C& G
  18.     url: 'http://www.cncml.com'; N% f! o: j, f* c3 l8 j
  19.   }
    : a3 D6 v* P; e  [2 V5 \' q
  20. })
    " D! C) E+ y2 z) e( [* P0 e
  21. new Vue({# [9 ]; x$ }* C
  22.   el: '#app2',; |0 ]$ k0 k& B
  23.   data: {
    $ K! J/ a; Q8 _  j8 R
  24.     arr:[/ v# X2 Z  k. k# k4 s# L
  25.      {a:'bb'},, E- i- \- l. k# R& T8 B, g1 {( i- h
  26.      {a:'cc'}' s$ A! \, q1 X
  27.     ]0 \5 E3 O! U" g! K. J
  28.   },
    4 f* p) C4 t, w6 m7 N  N0 {+ ~
  29.    methods:{
    ' q2 T( k% {, S! S3 `, ?5 m
  30.     tap : function(){6 `5 A) N, `; K* |  H+ P, ?
  31.      this.arr.unshift({a:'new'})9 ]8 t' {# S/ O
  32.     }7 e9 O8 a+ j0 H/ `+ m  o' Z
  33.    }
    / }+ q; I$ P  ~8 P* _- u
  34. })
    0 X+ V# p, f/ R2 n9 S& a, }
  35. </script>
复制代码

" M) v5 K  g3 \
) v, X# O7 q0 _. j; e- T. @' x5 u
在这里参数是监听的事件名。

# M/ f& N1 o" ^# ^, P6 K: w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:40 , Processed in 0.062169 second(s), 23 queries .

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