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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12475|回复: 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">
    : }  Q# g8 l: O. ^- ^) K
  2.   <p>{{ message }}</p>0 W* O5 I  O& J% g4 N
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    2 l0 A6 A$ Q: h6 m4 d
  2.     <div v-html="message"></div>
    # P5 o5 m& T5 D, X$ X, v
  3. </div>
    # V+ c6 l3 o" u4 V' o
  4.    
    ( Z& e" c3 O  @8 V
  5. <script>
    * {. {# C& y" a) C1 F* u/ i+ n. P
  6. new Vue({
    & Y7 R( t  T' m
  7.   el: '#app',; M! O" p7 p, @2 \( a6 b
  8.   data: {' ~) K. C1 ?# Y: e: ?1 ~" h
  9.     message: '<h1>菜鸟教程</h1>'
    * b- w: X3 N  h
  10.   }8 }" b/ ^2 W/ m. i% f8 H
  11. })
    * Z1 O8 l# u7 O) h7 T; d
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">8 M, o5 V) q- A1 I; y5 }! a
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    ! a/ Z1 b, n. m" ~& @1 n
  3.   <br><br>
    6 e3 z% I- F6 E3 Y7 s1 Q9 N' t
  4.   <div v-bind:class="{'class1': class1}">5 ?4 B+ X6 L6 n9 ^9 G& @
  5.     directiva v-bind:class
    5 ^- l! @0 E9 D, Y$ o+ x' N' v
  6.   </div>0 g% X- x/ _8 B/ _7 {
  7. </div>6 ^# j2 A& K, g' l! p  Q
  8.     7 A" ]; ^$ V; Z, }1 W/ V7 G0 @. H
  9. <script>9 Z! z5 c5 v* ^2 D$ s6 K
  10. new Vue({4 \. Z  K0 a8 \' f1 p, q2 Z; t
  11.     el: '#app',
    * ?+ M3 d3 b, K& Q) {7 c
  12.   data:{. z4 q, K' s% W, D
  13.       class1: false
    7 t- {- a# i6 D% i0 |
  14.   }
    4 x/ W) o9 k6 \4 `7 b
  15. });: F2 \; W* |- D& m( L7 i/ I
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">; H3 Q5 b, m4 \0 o
  2.     {{5+5}}<br>& O3 X1 H2 }! \& A( ~( T% \# g7 O5 f
  3.     {{ ok ? 'YES' : 'NO' }}<br>* v$ w& @% ~2 \- X" M) w" w
  4.     {{ message.split('').reverse().join('') }}
      p$ Y: l, ^, V0 i$ |- x
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    4 O$ S3 h% j4 A) t1 P; `# L
  6. </div>
      y- @% j" P/ Y% k, m
  7.    
    7 n- Z3 S$ ]' a1 a
  8. <script>% h- w7 v+ H' [. |  G9 {% P
  9. new Vue({) c. [+ e4 x  N
  10.   el: '#app',
    3 p) o3 R5 C, t1 f
  11.   data: {/ k  b3 K3 J3 K/ i2 f
  12.     ok: true,
    : v: ^0 d0 a: M( @! S
  13.     message: 'RUNOOB',; L  E6 _: M* H+ E" M6 g
  14.     id : 1
    % O7 V  I' Q% n7 I4 p+ Y" F4 C! ~
  15.   }
    $ `/ Q2 Y- j; r! r  n, P& u
  16. })
    & C* R3 i+ N! {
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">4 ?! P) B, g" ?- W% f
  2.     <p v-if="seen">现在你看到我了</p>
    3 |6 q  x$ n7 C2 h' q! G( y9 H
  3. </div>
    ' N, c, z5 B* V) a1 w/ h# X0 A
  4.     5 p7 u. S' e( a, m; j3 j5 e
  5. <script>
    - |1 f5 @& }2 |; \. u; k
  6. new Vue({
    4 T- G$ F- u; K" H5 q& H
  7.   el: '#app',- i9 K% _, L+ Z0 @7 [# Q
  8.   data: {, H3 j! q! K  s8 r0 y
  9.     seen: true
    % T( H0 U0 f; K. I) l! ~
  10.   }1 t% S" l( [& Y" w$ O/ R) {2 k
  11. })
    ( D6 c0 B/ T; P5 {! u: @+ M
  12. </script>
复制代码
5 K) X, g% p* x) U* W4 c. Q2 W& [
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">, O/ }$ k1 z3 m; @% m" [4 }
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    - W( Z, X+ V$ S9 I- P: U& e
  3. </div>$ P7 Y% z5 l3 A, U, R; ~6 J
  4.    
    8 S& B& k. V6 }: v8 }' g
  5. <script>
    8 u4 Q3 a6 h* E1 d+ `/ R7 I, _
  6. new Vue({# ?8 Y- c- g" T1 ^& T1 H
  7.   el: '#app',
    * O! }4 `1 ^+ ~3 n; T6 E
  8.   data: {. N0 v9 k9 q8 f- X; e  h
  9.     url: 'http://www.runoob.com': |' P- u: C$ s7 y; I/ B- Z
  10.   }
    , m; G+ K2 E2 @; L/ l- V5 W$ a
  11. })8 `6 J! b) g7 B# @7 j+ b( K
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

' d# a1 v! ]7 V" t
  1. <div id="app">$ E  S6 y' X" [9 Q
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>2 A; p6 }1 c; G+ ^* T
  3. 7 w" q* L* l' p/ E. Z7 Y" J' Y
  4. </div>
      T; F4 M' O4 A+ i8 Y

  5. 9 O, @" y" E) z6 D  ?
  6. <div id="app2">; _' {8 m  ?- W
  7.    <p v-for="val in arr">
    " P8 H6 a; N# z, e# h8 c! ]6 ~
  8.     {{val.a}}+ `# J0 y/ C! h! \3 d; a
  9.    </p>8 v, j1 Z, e8 O* }! _
  10.    <a  v-on:click="tap">点我</a>2 X) N# }- e7 Q$ p3 E* J3 u
  11. </div>) R) \/ H  v! v+ \$ l% |) T6 U0 F
  12. . Y* h# j3 M. V* g$ i

  13. 0 t: e. I' ?5 E
  14. <script>
    3 N* Q4 _2 c( {1 L' Z, k
  15. new Vue({
    . D, O) U! f# S) Q
  16.   el: '#app',8 a& i+ w. @3 s. N- ?. R! H: x
  17.   data: {
    2 V( u6 t5 t6 @% P
  18.     url: 'http://www.cncml.com'
    % j0 O2 |. y" k3 E  @$ Z- i
  19.   }
    + g4 J( x$ g* X: {8 A' {) M
  20. })
    + e2 ~' Q1 d: `- D9 {% V
  21. new Vue({
    3 U- M1 o, x. F) T# t: V: m; W
  22.   el: '#app2',
    9 s5 J6 J6 b( @. O8 U6 K+ v4 x4 Z
  23.   data: {4 l3 m% R; w, Y* V" f: _5 S$ V  v
  24.     arr:[
    & ^$ s" j# B5 D5 \* v  r$ s
  25.      {a:'bb'},, Y9 W# F. C& a; A- x4 d
  26.      {a:'cc'}
    # P' }3 `. ~* X4 z8 y( |
  27.     ]+ {+ a, W0 i4 Y' g' `- g
  28.   },3 B, j: m5 z% {. f" y- E5 @
  29.    methods:{
    ( O- p- y+ Z6 R3 `2 s
  30.     tap : function(){+ R# m- W9 _! r' A
  31.      this.arr.unshift({a:'new'})
    8 O3 s2 M  ?; y% L
  32.     }; t" ?8 t0 D7 k* e" R
  33.    }2 ~" f5 D+ ~0 B  p
  34. })1 s9 o7 Q& e1 L- y3 U$ p
  35. </script>
复制代码
- P9 `) [( o# l/ p% {( Q
4 {" s2 {. K* z' Z. ?9 M
在这里参数是监听的事件名。
2 O+ ?' b% }) w7 j/ _3 w/ j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:10 , Processed in 0.118498 second(s), 23 queries .

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