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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10674|回复: 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">
    / j" B" Y0 B9 K- ^$ S
  2.   <p>{{ message }}</p>4 y5 ~4 q$ a8 s
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    " `0 Z3 G" d5 ~6 {: J* I$ I% o
  2.     <div v-html="message"></div>' S, |$ j+ h4 @. c/ P
  3. </div>
    : A# K( j) V+ Z- z& o
  4.    
    ) l- ?& N) |! T& W  j
  5. <script>
    , x$ `. X* }. v* x0 _" u8 u
  6. new Vue({( T: e& Q9 \2 x% ~. q' g. X8 M- d
  7.   el: '#app',1 O5 k- ^3 D" H* P% {8 k# B
  8.   data: {
    / T8 X+ g% \5 H' l# O
  9.     message: '<h1>菜鸟教程</h1>'
    0 u; D; k) D* `
  10.   }
    ( _% z; d: x2 J  ]) s
  11. })
    : Z( p6 S0 o1 y8 e  k  |0 B
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">/ b  @& y7 G- A. Y8 l
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">- W2 L4 q$ ]' M6 W! N. m; Y* z
  3.   <br><br># ^; O8 b5 \( ]' ?
  4.   <div v-bind:class="{'class1': class1}">
    2 m/ n# E* F+ d4 i6 L3 Q6 P
  5.     directiva v-bind:class0 E" D; V' |" G/ @) P; x
  6.   </div>
    ( n- y- x% v2 ?3 z
  7. </div>
    & U# L9 `: q: K$ r& Z8 {4 s
  8.    
    & ]% F/ q9 R$ e2 e6 V6 o  q3 R
  9. <script>
    % m5 `& c, r5 K
  10. new Vue({3 L5 S& {2 g3 T! p
  11.     el: '#app',
    ; O7 [$ S- r! p9 j  h6 S& w: |& @
  12.   data:{
    9 m3 @5 f+ |1 e+ W
  13.       class1: false7 V* {1 }! I$ ?' U3 o$ ~& q
  14.   }$ P* D; g$ b0 Z0 Z, a5 F
  15. });
    $ Y+ i  l2 t6 x0 H1 K( `
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    4 n4 b. o# Z4 i; B* _
  2.     {{5+5}}<br>
    , K& z6 c1 v3 B4 A$ R5 r$ p: g! ]
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    " @' O1 c. v6 @. Y- I) j4 S0 U
  4.     {{ message.split('').reverse().join('') }}0 w! H; Z5 h  O% x' Y
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    , i1 O4 G- Z' Y2 G# O
  6. </div>9 \9 o& d7 ?7 R( c1 Q+ C+ m' e
  7.     2 P( S/ j3 Q2 \# v
  8. <script>
    * J! p3 W3 u) i1 S; W9 B
  9. new Vue({
    ( a- G0 \' Y9 X; E
  10.   el: '#app',1 `% w. B* Z4 E/ |4 ^8 b
  11.   data: {
    & Q+ j0 a! z7 s+ a: ?
  12.     ok: true,0 u& N0 F7 y4 y% w  ^' b
  13.     message: 'RUNOOB',
    $ o: |  V- J0 Q9 Q
  14.     id : 1; V( D+ H# c( Q5 P  Q& U# B
  15.   }
    / o* ]! ?, l* m5 o8 E( C
  16. }), z% A- _$ x! y4 C$ F- }
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    " p) A3 g) N% C1 U& |0 y0 l  D: z
  2.     <p v-if="seen">现在你看到我了</p># ^8 V/ I7 \6 h  J4 b& z2 R2 P& f
  3. </div>4 U( ~% a, p# ~7 i
  4.     7 Q; I7 S8 R+ [# {1 D' @  y! X
  5. <script>
    4 ^% n# P' t/ b- [- V9 K: U) p
  6. new Vue({) Z9 k* K* {# F% i8 f+ a* s1 h
  7.   el: '#app',
    , o3 M' J6 E3 ?; `4 c
  8.   data: {6 [* v0 ~2 @, N' z6 `
  9.     seen: true8 Z6 h( W( D* K" ^7 u/ w7 h
  10.   }; [& j) |3 d+ \3 S# @. Y
  11. })
    : P2 h5 Z8 u* T& w2 h# U, d
  12. </script>
复制代码
5 {8 b5 l. B) {  {
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">  o8 A9 u, Q5 O+ Q+ b
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>$ U0 H9 \+ T, L$ M7 W
  3. </div>9 T0 }" i& I4 j0 d
  4.    
    8 i8 `+ e0 H( i5 B
  5. <script>+ k1 ]2 F( x7 \* c" O0 W. e  N
  6. new Vue({% n, T" E% i( W5 o* ^, z
  7.   el: '#app',
    , h" @: }: A3 o) y2 X
  8.   data: {  _' N/ j2 \& \6 R
  9.     url: 'http://www.runoob.com'
    3 g4 m9 I- X7 L# X
  10.   }$ u2 G5 j# s6 V1 M% ~5 _5 E
  11. })+ C5 z( e: |* i1 J9 a4 V
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

' b9 H& [  s3 G! v& Z. J0 X  l
  1. <div id="app">  o7 r( c: b9 r7 C# N. \
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    : h" S* i4 P6 u. V9 X  \
  3. , R$ s) I' r5 y; T
  4. </div>
    8 y1 a' L8 w' Q% l* n3 b

  5. * ?6 h" H) c2 x7 W7 g* U
  6. <div id="app2">
    9 _, V' m) e6 ]5 @2 F7 I
  7.    <p v-for="val in arr">
    2 ?9 r. Q) x% D( A
  8.     {{val.a}}: h2 _0 ]4 f8 ?' i7 e
  9.    </p>* }! q6 F; A; U3 h% v+ Q6 v0 J2 t
  10.    <a  v-on:click="tap">点我</a>* W- _' A8 \) u1 a
  11. </div>4 i# l0 W7 X2 ~. h9 @, D3 U8 O7 s1 k& r

  12. ' L( F, p3 G/ d* P3 w! c7 F

  13. 8 g" e5 t4 I8 z1 E3 o) h- c
  14. <script>
      f/ [& F( K$ p" t# n: _  m; J
  15. new Vue({
    , l3 Z9 a6 h: `/ P/ a3 d" y- _
  16.   el: '#app',0 ^3 d; W8 r6 n. ]! o+ j) K
  17.   data: {* m7 n% U$ F3 V) r' m! Q% n, ~
  18.     url: 'http://www.cncml.com'
    9 v  m/ o9 _1 a+ H
  19.   }9 }$ e7 m+ K$ K% a. U
  20. })
    ) H1 j: U7 q9 U
  21. new Vue({( W6 o1 d( |0 J( w& f
  22.   el: '#app2',7 p) h4 i& f/ Q; c. ]( R. B
  23.   data: {
    4 y8 c: r5 F( ]  e4 ]( l$ r7 ~
  24.     arr:[. V( i8 U* E: [; S* V* u
  25.      {a:'bb'},
    2 a0 u" j3 `6 V5 x7 h
  26.      {a:'cc'}
    ) d0 c* p' i1 j5 \$ P0 k' T
  27.     ]
    / G4 t+ n5 B  w1 C* `
  28.   },' ]5 B2 G, `& \9 S, o
  29.    methods:{4 l- a" _# f, B% l
  30.     tap : function(){" l% ~8 R1 u4 D- j5 ]
  31.      this.arr.unshift({a:'new'})
    9 C; d* k. R6 P
  32.     }4 e9 u+ `, f$ q# t
  33.    }: w, G' g. [# y, L  x
  34. })
    9 f7 [& j5 ?% b  ]
  35. </script>
复制代码

( J; @8 n3 l1 ]4 m- z2 [9 _1 G

4 A: U( E# L' \
在这里参数是监听的事件名。

$ W0 z7 T, ^5 s8 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 12:16 , Processed in 0.122850 second(s), 22 queries .

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