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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12474|回复: 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">9 e2 B1 F2 M6 M0 [( C! G
  2.   <p>{{ message }}</p>
    % F! N4 P* J' T# F4 s
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    4 k' B7 m* w& t% n, V7 W
  2.     <div v-html="message"></div>3 j  T: n5 }+ A: T
  3. </div>9 M3 Z- R6 m8 @
  4.     ! [( e; d1 r. N9 e, |+ j
  5. <script>( w- y' T) F: I2 w- n, x8 R; L# \
  6. new Vue({0 c2 W0 Z6 f1 |) \4 Z- F0 L
  7.   el: '#app',' O7 G! p- K# q2 G: G
  8.   data: {2 l: l5 L- T( U$ u+ A4 \, y
  9.     message: '<h1>菜鸟教程</h1>'
    ) Q7 R  b$ b, A3 ^
  10.   }
    5 V5 ^- [4 B7 Q+ r8 p# D. T
  11. })3 S* j; E% b( `
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    : {, O2 c  ~) ], w' |
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    + I. {8 x6 N  w4 S9 Q/ V
  3.   <br><br>
    2 }5 S: R/ `7 E9 o7 V
  4.   <div v-bind:class="{'class1': class1}">
    : l# n! I; R5 [; [% f
  5.     directiva v-bind:class7 p/ H: N  Q: W" K9 h) s
  6.   </div>
    + U3 g3 G5 g, i8 _: T
  7. </div>
    , u  j  ~8 f5 L( @4 g1 p7 V0 _
  8.    
    . a; c; m% T4 e# \
  9. <script>4 B/ r" J' L( O
  10. new Vue({. E! U& C2 b) F$ R1 t; `
  11.     el: '#app'," I! w; `5 F/ y5 a+ @' \
  12.   data:{- W5 Z4 S* l5 U* v% G1 ^5 J) O1 r( u
  13.       class1: false7 M9 K$ ?/ M+ B1 k1 d
  14.   }
    ; u# P/ |8 z$ k
  15. });2 f! m7 j( t- z/ R8 w  H  S
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">/ z8 `8 {+ A, E5 J4 E
  2.     {{5+5}}<br>) m  g4 Z5 c( C/ X6 [7 i3 [+ j$ |2 e
  3.     {{ ok ? 'YES' : 'NO' }}<br>" v! q; [$ U3 V
  4.     {{ message.split('').reverse().join('') }}9 h  C) t, C) `8 n
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    6 @+ h8 P5 `7 _0 p! _3 r0 Y
  6. </div>
    ' L8 C6 I. q# Y5 h/ H* ^" _! G
  7.     & L" w0 k# P$ r* d( u
  8. <script>
    8 {- ~/ R+ n1 S1 ~
  9. new Vue({' `6 E! w; Y; J, s9 x4 H
  10.   el: '#app',2 F1 K5 c8 q) U. x( R
  11.   data: {6 X  m2 x3 M$ s# G" f
  12.     ok: true,- i& D& `6 `' g" E, J
  13.     message: 'RUNOOB',! C/ c- m  E4 S/ @6 N, A% w0 _# p
  14.     id : 1
    2 E8 D. E5 l! u
  15.   }
    ( G: O2 q/ s& O9 l3 F; O& f
  16. })' H  G' m+ v, I( S' R- J! K
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    6 l  J2 [6 A; d: A% \4 h
  2.     <p v-if="seen">现在你看到我了</p>
    ( @- @1 O8 |) g& z% }; t7 a
  3. </div>% e/ a5 I8 O! U) }
  4.    
    8 c0 K! l, K# z6 j1 z# M5 |4 `
  5. <script>
    % Y" \5 j' T! Q0 X
  6. new Vue({2 n% U. q* w5 q0 f
  7.   el: '#app',
    3 M( g: m1 d, S
  8.   data: {
    ( a8 {# Q5 ]/ ^( [+ |
  9.     seen: true
    7 e) u! ^2 }( ]& i9 a- F8 k
  10.   }: A1 B+ l' s! {1 O6 r6 t5 q( D2 d
  11. })
    7 }8 y' m; @* T  w! S- P# E6 ?% \$ n
  12. </script>
复制代码
! O! N: @" }  n: x2 A3 G1 [0 w
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">: R1 ?8 V" d: |( Q" [" m9 o- v$ {
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>/ Y% L; t0 |1 `$ z' ^- U# c$ j
  3. </div>: K. t! Y( W0 v' ?8 h! }6 \
  4.     & G. \" u, I) L. _
  5. <script>/ L9 h6 v' b2 J- A' ~- f# Y8 V
  6. new Vue({. F5 p! H8 \  Y
  7.   el: '#app',
    ! t' `6 b: z7 L1 R
  8.   data: {. y% d# F; C7 e4 C. C
  9.     url: 'http://www.runoob.com'6 S' h4 ~) |) u4 |3 B5 }# G- ?
  10.   }" P# B7 B2 D$ f7 J3 e, H
  11. })
    ( Y/ Z- ]6 l/ o9 k1 L
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
/ W% i) g$ z, o4 q; ^" t
  1. <div id="app">! T, L* o' @0 \- m
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    1 n- c/ t! w7 s% Z. k

  3. ; x" ]8 Q$ O* V1 z" o2 C
  4. </div>
    1 ]. g! C; J' L6 K$ A
  5. 6 M1 k$ X: v! q( R
  6. <div id="app2">: Q3 Y1 C/ ]6 J* c8 w
  7.    <p v-for="val in arr">
    , Y! I6 U9 a' ^' O9 O7 I  M9 S) X, w" d
  8.     {{val.a}}
    " \" c* r5 h3 b" `1 B) A' l
  9.    </p>- \5 ~2 P+ c) G! X6 _9 A
  10.    <a  v-on:click="tap">点我</a>7 ^; J& n# Y6 x  i! H
  11. </div>6 H! @' ~; x7 Z& r4 ~5 L* L2 ^7 x* U

  12. 3 v: ?0 x" \9 I& [" |, R  A
  13. / C2 x8 p; G) Z. ^* _5 [
  14. <script>
    ) \( ~" }! b: B8 g" C  B" Q
  15. new Vue({' g- @! M4 Y5 e. Y& Q7 ]
  16.   el: '#app',& x' {3 v' D4 k0 w6 s) V
  17.   data: {9 p/ T5 ~+ @2 N1 ~2 p9 O- |* t
  18.     url: 'http://www.cncml.com'! p2 w5 d4 }' ^: t! w% }
  19.   }+ f6 h+ Z) W. G' p" k5 z+ O6 G; x
  20. })
    ) `. Q2 J* \5 ]) Z7 }4 `
  21. new Vue({
    6 c& [* S, I' j3 u, }9 {3 ~, Y
  22.   el: '#app2',0 D4 f: d- \2 U6 U; W! O% Z
  23.   data: {
    5 F/ E: A/ X' s& _( X8 ?; {
  24.     arr:[
    3 q1 \4 m8 c8 F9 H; c' R8 K$ A
  25.      {a:'bb'},2 [/ W" `' D  M& z
  26.      {a:'cc'}! ^2 {6 S7 N6 e
  27.     ]
    : z) }6 L$ U+ a7 H
  28.   },4 k) }4 ]$ r3 S% H) H  t, U+ l
  29.    methods:{$ T% W1 A" D; _$ c/ I; Z
  30.     tap : function(){6 ^6 [8 ]9 D0 d! i# Y
  31.      this.arr.unshift({a:'new'})
    3 T2 y4 W. _8 W; N; U# u6 l
  32.     }
    & Y/ D% w2 c( S0 x
  33.    }
    $ y  p( c* X( a; @5 n; Q
  34. })  [- q; G- _& i5 h$ m, }
  35. </script>
复制代码
" Z5 Z) J! |# m0 c( ?, R0 Z  {0 }
8 M5 o) f, @. _1 D8 u
在这里参数是监听的事件名。
6 j; r' G; P, c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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