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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12449|回复: 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">
    3 I8 X; S; s6 |( Y3 g
  2.   <p>{{ message }}</p>0 O3 t. M1 L, r, M5 P
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    2 m  a. ]+ i6 ^" E9 H& N8 Z" c% x) \
  2.     <div v-html="message"></div>- n% z1 s2 A; i1 `( w+ h. i
  3. </div>+ F, K- b, m% n! X
  4.    
    $ }  v4 V2 A0 n0 C. U+ V
  5. <script>2 m( j: U3 o* J1 Y
  6. new Vue({6 I+ y) Q' Y: P' z
  7.   el: '#app',
    $ F( b) w% W- u1 r3 \3 ~7 S& F: o
  8.   data: {
    7 y! Y% k8 F. U/ n: q% d& o0 }
  9.     message: '<h1>菜鸟教程</h1>'3 m5 K0 z7 V$ K# }  b- i
  10.   }- B+ t0 N' n, N% u
  11. })# h( _1 u/ {3 C+ ^1 j% {" e
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    5 {, {+ S. n! U$ Q
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">6 a) q- v* i, Q
  3.   <br><br>9 }! \# N+ {1 t# f- R
  4.   <div v-bind:class="{'class1': class1}">* o7 S" b, }7 e9 L
  5.     directiva v-bind:class
    , {) V# y; _* Z* V, Q! b% z4 {0 b% p
  6.   </div>
    4 z' H7 v' i- d
  7. </div>. F- T1 q" k" L
  8.    
    2 Z* `) b; e+ V) y# [+ |  z
  9. <script>7 j" {) f* t# Q" c3 c
  10. new Vue({6 Q3 ]% |/ a4 I9 `- j! r
  11.     el: '#app',6 g/ Y: |7 L1 Q( |% s5 J6 ~
  12.   data:{- C& v$ T% I8 b5 y% n+ y
  13.       class1: false
    / @& H, `2 Q* S; q- u
  14.   }0 H7 \5 w3 y7 |4 s( W" g2 e; n0 }
  15. });1 ^, E: R7 C4 Q& J2 i7 Q/ b
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    1 P7 M- i7 w0 ~: j! M8 w$ L7 q( a
  2.     {{5+5}}<br>! ~3 J0 l8 t+ }) j+ C
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    8 {  @& |, ^: Z4 v. e, H
  4.     {{ message.split('').reverse().join('') }}0 ?) i5 H6 G. b9 Q! Q' E6 o
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    9 o' s$ A* T* N" O+ S
  6. </div>
    0 w1 T+ M9 B0 K& k
  7.     7 R/ [4 k$ S, w2 ]7 D9 W* P
  8. <script>
    0 u7 ~7 |( j* N* ^4 {6 R
  9. new Vue({
    ( _) |$ w( M! n' |- g, ~3 t5 C/ o
  10.   el: '#app',$ {8 A2 ]! H& r: z$ D/ J* Y. E: I% c7 ^
  11.   data: {
    0 y1 a! n/ m7 p( n
  12.     ok: true,
    1 h2 o  [" @) @3 q* S' t  }. n- ?
  13.     message: 'RUNOOB',
    ' P5 z; \- F9 h
  14.     id : 1
    ! I9 t- n. s7 K
  15.   }
    ( Z* x6 {* i9 j
  16. })9 H. u) ^! V3 ^" C" b* ]8 @
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    , t0 C1 ^  g2 w( C# f+ O
  2.     <p v-if="seen">现在你看到我了</p>. `4 v- g: h& h# {' p
  3. </div>0 ^7 E: g6 K. p( \" E) E( }
  4.     & R, p  J3 H; y" Y0 Z: i
  5. <script>
    , i/ K0 g; p# y3 @; ^9 o4 U
  6. new Vue({
    9 \3 W' y2 ]) K2 c
  7.   el: '#app',# l' m: ^3 J6 B) @
  8.   data: {
    * K5 c+ M, Z/ l
  9.     seen: true3 b7 V+ v0 \! y# |( L1 n: X
  10.   }9 o0 V7 k2 e% R
  11. })
    0 ^& o7 e, z* D9 Q
  12. </script>
复制代码
* J; n/ A; t4 C, o, F+ V9 o
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    ' u8 i% \% L8 w
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    ) }' n2 ]- a/ }% j
  3. </div>
    ) L. J) x5 [* c( z
  4.    
    ! I: ?1 H: i) L5 S+ c! r
  5. <script>; p# _# M1 L* S; S7 g6 i
  6. new Vue({
    8 z9 y+ o  Q+ z* @- \$ e
  7.   el: '#app',; {' N& A% _  X& I
  8.   data: {; Q: o7 |. s/ s; t( b( `; l
  9.     url: 'http://www.runoob.com'
    + ^, L) z6 `* M  l6 C- |' j
  10.   }8 d% i' ^9 O' B: ~
  11. })
    & L0 Z8 r# m6 m6 f
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
8 W4 i$ d( s7 x; F0 P
  1. <div id="app">
    3 p. o, l) D! W( }
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>' e' a' q! R& G1 J$ }' _  W

  3. 6 l# [3 C0 B$ l' O9 [7 r% ]
  4. </div>4 u; D4 T) D! c3 V
  5. 6 k$ F/ q1 `6 b1 i/ f
  6. <div id="app2">
    $ P; X! r3 M, A, L* ]
  7.    <p v-for="val in arr">
    6 e+ }% W8 w& V* g
  8.     {{val.a}}8 n, g0 V. @% e- a% n8 H
  9.    </p>& {( N! m# n" Y( Y- ^+ T% ~9 p! B
  10.    <a  v-on:click="tap">点我</a>
    4 u7 f# H$ a+ T
  11. </div>3 V8 f9 f$ k0 U: y* k' Q4 |

  12. & f" x) u5 }2 F7 u
  13. - D  h0 V2 v7 T1 y5 a1 Z3 z! p
  14. <script>
    $ Y  Z* }- Z, U) T. p  O9 y. Y
  15. new Vue({
    : z2 f  o0 K4 x3 E0 E/ I$ ~: }9 h! b
  16.   el: '#app',
    % C) A  c: X; A# ?9 `# w
  17.   data: {
    , }4 o  I$ K5 [: \! a6 X) c6 m
  18.     url: 'http://www.cncml.com'
    : t* g# ?" ~% d" i
  19.   }  y. P6 D# _6 R6 e
  20. })
    $ Y! k+ `/ P( ?$ e1 P0 D& U  Y, t, ?
  21. new Vue({1 X# o  d" H. W' N" H
  22.   el: '#app2',
    6 @! Y' `+ ?. ?0 S
  23.   data: {
    / I% P. Y# l4 J" E) @( c5 r! g
  24.     arr:[
    8 ~; Q. Q/ W/ @4 o) n
  25.      {a:'bb'},# D, A2 i2 X% n) x& k. I6 t! x
  26.      {a:'cc'}3 d& c7 n$ J2 G- |% w
  27.     ]9 C  D6 t  i$ Y; @* W: b* m
  28.   },$ e7 ]5 q2 z9 |  U# [4 a) D
  29.    methods:{7 U+ y3 p" P0 {1 M
  30.     tap : function(){
    4 w' A+ M+ j8 R, I6 i
  31.      this.arr.unshift({a:'new'}); x- G" s% s; s# A5 \2 Y' I
  32.     }. d, [; m5 ~# M  A' E& `& s: k
  33.    }# l% P. H/ E9 c
  34. })
    ! b3 V: D% E' I) }* A, ?; L
  35. </script>
复制代码

" N+ W* |' O; \+ n& t. z% P9 ~( C

* c" ?/ C8 v4 X0 Y4 v' T
在这里参数是监听的事件名。
0 D( e! [8 X1 N: S8 K: Y5 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 11:26 , Processed in 0.137949 second(s), 24 queries .

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