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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12465|回复: 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">
    6 I0 ~) x/ z; T
  2.   <p>{{ message }}</p>
    4 h8 I4 J! c6 R. Y0 L, j
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    : s4 g: o9 ?9 ^8 Q" \9 |
  2.     <div v-html="message"></div>
    ' F7 N% h4 E) b6 \  d: u
  3. </div>1 V/ \6 _$ u, v7 k2 {" ?
  4.     + B6 c+ D" W% O1 ?% i/ ~0 ~
  5. <script>
    9 Y: I1 V! I( H- H9 P9 `9 w
  6. new Vue({; C% A" e$ ~$ H( |) b
  7.   el: '#app',
    ' X6 }; Z/ T0 i& U
  8.   data: {- o0 r% y5 {/ n# l1 }9 D0 M
  9.     message: '<h1>菜鸟教程</h1>'! A0 W( H8 s3 F4 P
  10.   }
    ' {# s8 e% K9 b7 G( Q
  11. })
    2 @) ?8 p4 k$ y- o* O
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">1 n- l8 q( }, k
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">7 U  w: e, F# v) `: o
  3.   <br><br>
    3 ?. c5 Q  |# l
  4.   <div v-bind:class="{'class1': class1}">$ p8 F$ a1 z6 t, o8 }8 U
  5.     directiva v-bind:class
    3 h' w5 S, ^% v: |
  6.   </div>
    0 s8 P9 |3 N% o4 s
  7. </div>" H2 U' k  D( }& X8 q1 N- I
  8.     ( B& {& [2 K3 P& V6 {* E9 o: ~- O
  9. <script>; G/ T, `; x4 o
  10. new Vue({; D! \% c  Q7 Z4 a0 Y/ P
  11.     el: '#app',
    + B3 Q3 \1 H' m, n6 f9 J8 I
  12.   data:{
    , G! a: @$ ~4 Z1 o" q/ q+ v
  13.       class1: false
    0 }2 g) |5 J! [
  14.   }
    3 ~# w! u+ S/ {# m& I1 Z/ s& l- w2 G
  15. });, q" D; `4 N2 Y
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">5 D. |6 c2 _* U9 m8 ]) ^$ L# F4 T1 w
  2.     {{5+5}}<br>
    . d( g3 j0 z+ k) @' d
  3.     {{ ok ? 'YES' : 'NO' }}<br>) x- W; ^* R2 b' ?
  4.     {{ message.split('').reverse().join('') }}: j; @4 M' r8 P- W- u) V
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>1 P5 n3 N8 h1 u0 n
  6. </div>1 J8 Q7 P) I8 }2 I6 O4 y
  7.     " Z- Z" t  s$ L" O
  8. <script>
    8 K5 q$ Y7 Z- i5 v$ r" ?! C; X; D
  9. new Vue({
    : J" |. ~4 @) S& h0 v, O: |7 k
  10.   el: '#app',
    , X8 B( l3 }8 N% f8 [3 D
  11.   data: {  ?4 n  A" w  F. x; b! y. T! m
  12.     ok: true,  J: M8 @, U; R* ^8 g" v7 @
  13.     message: 'RUNOOB',; J. O. Q$ s! T6 R) s* {/ M
  14.     id : 1  n; @9 i# {( F- [
  15.   }
    , v- ], U: o; J1 w- T
  16. })
    ' S6 z) Y5 z3 ]0 }1 ?, C/ v0 u
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    , V5 H6 l$ `) ]
  2.     <p v-if="seen">现在你看到我了</p>
    ' Q; n0 `$ h! U6 T
  3. </div>
    , [+ J' ?2 H" Z) `0 ]
  4.    
    0 H4 G* Q3 b( a
  5. <script>, ?% U5 B. d( F' ]% W9 E
  6. new Vue({
    7 D5 O. ~/ x# `2 e
  7.   el: '#app',
    : y& H: B; M% `4 D
  8.   data: {
    & l  k; I2 a* d) E7 _# ?
  9.     seen: true
    ; m( k( h/ b. ?& l' N5 U3 c( W0 J1 c+ \
  10.   }* ~5 H/ |' O0 W4 @( u/ W2 H
  11. })& w$ x6 v$ x. Y
  12. </script>
复制代码
$ y3 g0 R# O2 L% v0 T3 a/ J  b" r' A3 \
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">, ?7 o/ q) _9 S! ]+ S2 d
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    7 m' P* S; v$ t! P, h
  3. </div>$ n5 B1 H5 t9 e2 t& s, A  l
  4.     % W& O& V! a9 [9 ]$ [' c
  5. <script>/ @2 ]6 f0 S2 G. h( b+ A* e2 s
  6. new Vue({! v/ f) g1 j' J0 T" t
  7.   el: '#app',
    5 R1 A# r6 S+ ~: g9 r# j
  8.   data: {" M$ \# N0 B: n' h( M3 Z3 {5 H( y+ j
  9.     url: 'http://www.runoob.com'. G/ T7 l- `6 X) |
  10.   }
    3 u$ A4 X  q2 |1 o* ~. I  A
  11. })- l7 {/ D6 C' Y5 n" B
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

$ A  k# b1 Q' ~' B' f
  1. <div id="app">0 z$ M* n7 A( R/ F0 j$ g+ t
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>  s& j4 u  n: r
  3. " W7 X) r$ v, Q% {* ~
  4. </div>
    7 e) C4 y0 r4 W3 M2 W0 x* |
  5. / j& O8 h( [/ }. I2 F
  6. <div id="app2">2 C8 \/ @+ C/ z6 P% b9 |5 o
  7.    <p v-for="val in arr">
    ) e( V: F( u* L5 Q* M
  8.     {{val.a}}0 ~. Y, V4 b8 d- l2 m' o
  9.    </p>
    ' s6 H3 l8 F5 z% L1 m% ^
  10.    <a  v-on:click="tap">点我</a>
    * B) k0 _% x3 ^& U. @7 L
  11. </div>
    5 r2 ]1 B- Q& V$ i) F7 y

  12. $ n7 d* Y: n" T7 Q) r* A9 c; }
  13. : X2 `5 r7 v8 j8 e/ Q
  14. <script>4 P5 w# d  Q0 s! k% M6 x
  15. new Vue({# k9 c! E; |& V/ Q
  16.   el: '#app',
    ( m( z# J5 T" S6 T7 @
  17.   data: {
    " ?% j6 M' T2 H6 X
  18.     url: 'http://www.cncml.com'9 T( Q5 o' }* w# `- z
  19.   }9 q8 X, y2 _! S
  20. })
    ' H- x! w- u7 s4 d
  21. new Vue({
      H6 [$ Y8 Y) J0 {5 R8 y7 W
  22.   el: '#app2',
    7 c& }/ x7 m$ p) V! c
  23.   data: {
    9 F$ t- T# v% t
  24.     arr:[
    % W. h/ }( x6 E+ w
  25.      {a:'bb'},
    * z. \* L/ {  n; h
  26.      {a:'cc'}
    ( H' ]% m7 ^5 v! G
  27.     ]
    - y+ B! d8 ?' J  b6 _* K! o
  28.   },
    ' \9 Q/ Z! t8 \7 Z  h
  29.    methods:{$ i+ Z2 L* o  o6 k9 l6 H
  30.     tap : function(){
    ( X% i6 j% e: H) s4 K8 m) ]
  31.      this.arr.unshift({a:'new'})
    - m" @: k$ \# w6 y1 Q, j
  32.     }
    " W) Q4 Z' b* o! J
  33.    }
    " X. o( \  k- f$ ~! N; E, p
  34. })( A5 `* |* q! o$ H' E
  35. </script>
复制代码
1 f& L! k/ W1 @. @$ ~( Q4 A4 K
. L6 U# K; C/ J- ~; X
在这里参数是监听的事件名。
# R0 f" V( N  h# x: Y' u& @( y8 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:33 , Processed in 0.126116 second(s), 22 queries .

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