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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15973|回复: 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$ t7 o- E4 X& C" U) k1 j/ b
  2.   <p>{{ message }}</p>1 R, ^, k* I+ b; e, f
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    9 I8 v8 G" u8 M' h
  2.     <div v-html="message"></div>
    * H" G0 ^7 q$ K- q5 \
  3. </div>- x5 W. g# m4 N/ f* F# z# m
  4.     7 q  [& _* C# ~3 {% c
  5. <script>' X- l. X4 y2 e8 x- G& f2 Z7 Y- h
  6. new Vue({  Q& z0 y& n& ^% t- K
  7.   el: '#app',
    6 m  s) X: i/ e- t' p
  8.   data: {
    ' ~1 N7 ^3 e7 z) L0 e0 y6 I
  9.     message: '<h1>菜鸟教程</h1>'
      Z  s/ `7 {. v7 B
  10.   }/ f0 `$ B, O& Z! R7 s% c
  11. })
    3 y/ s9 K# W7 P+ S
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app"># K$ K6 [* b. M0 y* |# o
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">% ?' Z: L# U8 B
  3.   <br><br>! R* ]4 z: \  z. ?
  4.   <div v-bind:class="{'class1': class1}">
    / c& T  s2 D/ L- M) p( Q9 U- o" P
  5.     directiva v-bind:class
    8 ^, y+ Z; O, D
  6.   </div>" t9 y% ~/ k" [: A0 X" B
  7. </div>
    # a* A4 ?: ?: G7 W# }) m
  8.    
    7 ?: I; M8 ^2 Z
  9. <script>% a! d0 S* a, a, `5 F" e
  10. new Vue({
    0 P1 _" P& G: P$ D& ^
  11.     el: '#app',5 j; h6 n) B" a. u1 s6 K- R/ t, O
  12.   data:{! b4 P8 l$ _% t9 j8 Y# ~9 o/ C
  13.       class1: false
    2 E$ m' S9 A  P4 Q
  14.   }
    ' j1 M' A0 |/ T' N7 [' c
  15. });7 Q' u8 Z6 x7 R$ G4 N7 J6 q9 F0 J
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">. }) s0 @1 l3 ]: L' A2 |
  2.     {{5+5}}<br>* d# F$ x% A% \3 d& f
  3.     {{ ok ? 'YES' : 'NO' }}<br>4 ~3 N3 k5 I3 z* M! y
  4.     {{ message.split('').reverse().join('') }}5 x9 {6 r- X( {- R, z
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
      s2 ]5 t; E4 u: n( K
  6. </div>
    7 H9 P; V; [# {7 g; H0 z$ Q8 d9 }
  7.     ! {# O! \, ^, z7 Y
  8. <script>
    3 S2 z+ q8 [! `4 N$ K0 j
  9. new Vue({
    & L6 E: N$ ~) F9 g9 O
  10.   el: '#app',3 _  C8 S( {& k8 n% O" i( V' j
  11.   data: {' j$ }3 Z& c5 w# P" g; R0 z8 l
  12.     ok: true,
    ! |: p/ \6 ]( s8 _/ N, R! Z
  13.     message: 'RUNOOB'," Z- i9 o$ ]* P( s9 Q( x
  14.     id : 1
    & p& R+ {- s4 E8 K7 G
  15.   }
    ! _2 W- N: y; E/ ~% W$ {
  16. })
    7 @3 U5 Y* j2 U$ e% q
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    / v- _5 H2 P0 ^9 c! i3 k% x' a" R$ {
  2.     <p v-if="seen">现在你看到我了</p>; P/ i% J% t% v' D
  3. </div>5 o/ J6 ]- e- `% K( Y. E
  4.    
    - e# m# w- b9 O2 q
  5. <script>/ A; ^$ z; C# X5 v0 s* [3 L* j# Q
  6. new Vue({5 ~$ V" G" M( P$ _7 n0 A# t
  7.   el: '#app',
    ) ^( z  E6 Y$ u3 K
  8.   data: {
    : N/ t- z% X& E6 q. N
  9.     seen: true
    9 {7 W( [3 ~9 B( N" X2 W* k
  10.   }5 F4 u" Z: _2 r* e0 K4 V  u, o
  11. })/ D4 p' \1 E( _$ F& X4 l
  12. </script>
复制代码
! G& Z1 F2 j  u0 U( H
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    7 A# ?, g/ Q6 N& |# b# l
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    & }& d. N' `* F
  3. </div>, V' G2 F: W4 ]
  4.    
      t. \4 E2 [' i$ o
  5. <script>
    . P. z* `& P8 f  {6 v
  6. new Vue({
    5 Q" ^) C, |( v, Q# A7 W- S
  7.   el: '#app',5 O9 A( P9 `( a& f* K
  8.   data: {
    ( l  K3 l7 z. V+ j" f6 e: Y0 U
  9.     url: 'http://www.runoob.com'1 z4 P0 F. k4 V% A) S
  10.   }1 X( M8 v9 q4 l/ H7 h% p
  11. })
    3 @* V# O" ]5 o" }  l7 h+ \
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
- X( O4 z# `8 n- P0 ^
  1. <div id="app">" [3 [* ?* S" b+ E, Z+ U. q
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>4 y2 q; J4 p/ ?

  3. ( P& h7 i6 Q1 c$ `  B' R% `
  4. </div>
    # H' Y9 j/ H$ G$ z0 N! v1 _9 j
  5. - l% n, [# k& H4 p& `: S5 A
  6. <div id="app2">4 m: b# K0 S) T8 r- k; \2 H5 x
  7.    <p v-for="val in arr">
    % C$ E1 l% T8 p" j
  8.     {{val.a}}" Y% M* d! I$ H9 b
  9.    </p>
    ; r! q1 a* Z0 c( p6 n  N
  10.    <a  v-on:click="tap">点我</a>
    0 J7 e3 v- P1 B( W* r; W5 d
  11. </div>4 _0 d/ Q! \8 y4 M3 t# R# B

  12. ( H: W; O/ d/ q+ s9 I

  13.   g4 |! ^6 Y6 F! L+ c- z9 I
  14. <script>7 @7 U$ K" K4 A# P' u
  15. new Vue({& e; a" E2 _8 b5 f& g
  16.   el: '#app',
    % M  b, ]7 a" G+ [7 r
  17.   data: {" i3 g* {& N# f9 R+ S: T
  18.     url: 'http://www.cncml.com'
      v% h( F% n( P+ _8 f$ p
  19.   }0 y$ k, l( `/ x
  20. })
    ; |. P4 }* V, I4 i/ P, U
  21. new Vue({
    , V$ S: k# J$ X8 c4 d+ U
  22.   el: '#app2',
    6 {+ `1 F0 }4 d' z2 S6 v
  23.   data: {
    8 L+ a% S/ o/ d  m9 O$ v6 S, A
  24.     arr:[% L9 w/ _" |, w6 ]6 F
  25.      {a:'bb'},
    , G" a/ g: r# [6 O$ f
  26.      {a:'cc'}
    - u/ v( b+ Q; H* _1 e( e5 |" f
  27.     ]- N% S3 u4 x. @4 B
  28.   },
    7 P. w6 ?. A- q$ @: T2 Y) \5 m
  29.    methods:{9 c3 S/ B0 ~0 q( x2 Q. ~; w
  30.     tap : function(){
    4 f. c+ }2 ?0 a6 w+ n3 k% W
  31.      this.arr.unshift({a:'new'})
    6 V3 E/ N/ n7 k' P5 I
  32.     }5 D7 B6 x& k) ~  R
  33.    }
    & S# d+ X/ U0 O4 `1 f+ B
  34. })
    2 U: N+ ]3 N- l2 ^
  35. </script>
复制代码
# U+ N6 d/ Z2 l
7 o  [  B+ O% ~' i  n
在这里参数是监听的事件名。

- l( l) n; I/ v" y3 d% m$ w& A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:44 , Processed in 0.054604 second(s), 22 queries .

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