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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15318|回复: 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">
    . x+ ]' ]; D9 L  c4 J
  2.   <p>{{ message }}</p>" f( G, b& Q& `, \8 X; r
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    8 c4 r! J$ Q# T
  2.     <div v-html="message"></div># f9 ~: A8 J3 P) r
  3. </div>
    7 F; O- M8 k+ a, W) s# B# i, [
  4.    
    - M4 m3 n1 M0 w! H1 @2 T0 w/ Z
  5. <script>. G) U+ Y2 Q* r) Y
  6. new Vue({
    3 o& N, B- K# D  x
  7.   el: '#app',( l! ~+ p/ ^7 k2 P; b
  8.   data: {
      L% m' I! a: n3 I/ U3 }
  9.     message: '<h1>菜鸟教程</h1>'' H! D- C1 X* i$ H2 j6 L
  10.   }
    1 W4 v% W4 w5 l5 D) h: A7 O: D  s
  11. })$ q8 n( {1 n0 b
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    . s3 _( N! ?, B2 h
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    * q1 }/ e3 @5 S# B
  3.   <br><br>  \, j9 p' [( n* G- x  Y& S
  4.   <div v-bind:class="{'class1': class1}">
    5 ?6 ]9 n# y5 w( i. b# ]/ G
  5.     directiva v-bind:class( p, D5 l: ~/ L5 G- a( p
  6.   </div>
    * s' i) T8 `6 C( \' c! K. O( g7 J/ }
  7. </div>
    + z' U& M( Q! V& u2 a* O8 Q, [
  8.     $ K" k1 x) L. j1 v& ?
  9. <script>
    & M" Y4 H3 i6 w0 p1 h+ v9 M. a
  10. new Vue({  g2 e/ _2 {/ v& w" R* D! \
  11.     el: '#app',. n; ~9 o) s; S
  12.   data:{
    # ^1 [0 m0 ?, V3 s
  13.       class1: false
    ) p, q6 N0 @5 X7 {4 ?: d
  14.   }
    - j9 }( O6 r5 t% Q+ [
  15. });
    . l' i  L1 W+ O1 q$ ?
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">: V9 w7 V  D2 p% R' s% U1 G
  2.     {{5+5}}<br>. |; ~$ I  X9 M3 W! @2 G* ^
  3.     {{ ok ? 'YES' : 'NO' }}<br># E: t, C# v# W; V  q
  4.     {{ message.split('').reverse().join('') }}
    # X1 t! W  u+ I; n/ ?& j3 U( W
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    , X/ p" ?  B3 b5 t
  6. </div>
    : y! t; [* r, l& B5 g" Q( Y' S( D
  7.     - h" }) ^8 u8 ]* a8 U1 |
  8. <script>  H2 T( b0 S+ i: g! _. }' q5 m) n, Y
  9. new Vue({
    / I4 W' O# G3 T
  10.   el: '#app',. ^" ]& q2 F: ]* o9 c; t
  11.   data: {$ ~; q2 L1 }8 C$ b4 @( M
  12.     ok: true,- D2 \: J/ c+ c, n& ~. |! A# ^; n
  13.     message: 'RUNOOB',
    3 g0 o& T7 j3 b* [" B
  14.     id : 1
    : t# Z; H' ?  M$ g+ a& v
  15.   }
    1 \) g3 ^+ c% \7 V0 k
  16. })
    9 V: X( v* [' u. ^# u
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    4 g( j" [  r! b" y3 q
  2.     <p v-if="seen">现在你看到我了</p>! O# [1 ~7 I4 {0 Q6 g! k
  3. </div>, g' ?6 j9 m8 \7 F% V. g
  4.    
    8 P/ G5 H2 b9 g, _4 }4 w1 ]) L
  5. <script>, w8 T7 |" Z% y- I; I" \5 {" T
  6. new Vue({
    7 H5 u- l4 a: @/ d# ?4 ?/ T
  7.   el: '#app',
    $ Z" |) J/ |! D( Y
  8.   data: {5 b. _& x! j( ~0 n- Z/ S5 T, g
  9.     seen: true
    7 {$ S( r/ ]7 [7 E6 S& C
  10.   }
    ) X8 f) G' q2 m5 a) z5 `
  11. })( t/ a5 i) L6 d2 M/ J) q
  12. </script>
复制代码
3 V- B- c7 ?  R5 E. |  \! P& b
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">, N  ^1 x: Y; S2 f
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    4 D  C4 j- z( D6 W
  3. </div>, [9 J. R6 a- z- h: q
  4.     # B2 T& N4 f2 y
  5. <script>7 P; [  ?5 B# x0 M& [0 d
  6. new Vue({
    . a* ]2 s8 X; T6 S8 [- ^) [8 r. ^1 q% [
  7.   el: '#app'," V! d  y" S) p/ ^& X% x/ j  _) Y
  8.   data: {
    & Z6 }1 R( {3 z+ ]- K7 s" m- c4 O
  9.     url: 'http://www.runoob.com'. B, [7 R+ P) }* I! G3 Y4 x
  10.   }( [; [! c3 _& R( B9 ]; s/ {) k
  11. })+ u) [" e+ e$ V, J3 Z9 s" f3 a
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
0 c5 T6 _5 t% m6 Z. r7 B. I' H2 n; b
  1. <div id="app">
    * u9 F$ ?  ~  a. X
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    , X! k8 k  a) k7 @+ s

  3. 1 U# Y- ]8 q7 W- y5 q
  4. </div>
    & A7 j& A1 f# K, B. H: w0 T* ~" G

  5. : Z  ?2 H3 k& g6 I
  6. <div id="app2">! B5 ?/ Z! d: i/ J% x2 n! u
  7.    <p v-for="val in arr">
    $ U; b6 t8 `* E; C2 X
  8.     {{val.a}}! S' V- U$ W, O3 o& z  J4 r
  9.    </p>
    * X7 {- O0 u2 D! [6 G
  10.    <a  v-on:click="tap">点我</a>* {1 \5 K. _+ D. o
  11. </div>
    9 o% G. X: v& Z
  12. * H# c) S2 h' |$ ]/ ]2 G! r

  13. ; q: r# H3 F  M- z6 G4 g
  14. <script>3 r" t% d) G+ g) `
  15. new Vue({
    $ x6 t% ]4 K. L% |9 u/ b+ i$ o9 x/ p
  16.   el: '#app',6 x8 I) Y7 K1 y* w
  17.   data: {
    ( L* o# o! @' o( v3 _- k" w1 @' \
  18.     url: 'http://www.cncml.com'' ~, `% O" @- d) U: e
  19.   }* X6 `6 w+ h% }
  20. })$ |( W/ U. @" f* W5 I- l6 s3 ]
  21. new Vue({
    0 X5 G0 ]  ?6 X  Y$ V# I- |; ^
  22.   el: '#app2',
    ' c: |! e1 b8 A/ W& d- L
  23.   data: {
    9 s$ D, |8 f0 Y* N' Z$ @+ V+ m
  24.     arr:[
    , f* K2 Z3 ~$ h
  25.      {a:'bb'},/ t) _) {0 T2 ^8 f5 p
  26.      {a:'cc'}2 t" ?" I7 h' o, |) l% b  s/ I
  27.     ]4 O& [# O3 O+ S6 ?+ F4 u
  28.   },
      k/ q4 z) A/ J  A7 W
  29.    methods:{8 O- Z& V( D' `8 F3 Q
  30.     tap : function(){9 U& {( g" O, H- @. w& v  D
  31.      this.arr.unshift({a:'new'})1 h3 i2 O) X" K! y4 Q* @; L4 A
  32.     }
    ' `) f6 f( h* R: p
  33.    }
    / d3 o) ~' [/ N- p5 G
  34. })
    0 [- q! p; F% G% C/ G6 r, T% T
  35. </script>
复制代码
2 N. P5 t0 s+ N4 b
$ O8 U1 I) B1 \* v; D4 }
在这里参数是监听的事件名。

7 ]2 j' t  W& \+ C! J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 14:33 , Processed in 0.060573 second(s), 23 queries .

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