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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14888|回复: 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 H6 C/ y+ x8 T' C# |
  2.   <p>{{ message }}</p>
    $ m! Q2 w% l2 b
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">9 Y4 V5 M1 S$ K& J3 U
  2.     <div v-html="message"></div>
    ) A1 i8 y4 T3 y  N+ v% k
  3. </div>  y8 k0 E9 h! c$ k# x" ~
  4.    
    & I. x2 c$ S% Q2 M, y5 M& W
  5. <script>) [8 n0 [% \# u6 h' J
  6. new Vue({$ B/ |& X& B4 S  n3 c4 v2 k
  7.   el: '#app',
    4 ]  i/ r3 z4 {
  8.   data: {0 F3 l6 b/ {5 h. Z
  9.     message: '<h1>菜鸟教程</h1>'
    " g+ j0 U! b. l7 P. j2 `
  10.   }
    . I  ]7 h5 Q" g, W: c) H5 x$ X
  11. })
    " _6 ^/ ^2 s$ D( C
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">( K5 ~2 B" e' V1 G- M8 Z  t/ ~
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    , p+ `4 [* o4 s# A4 }; N# Y
  3.   <br><br>
    ) G& z* t" K- z- V3 F, u2 O
  4.   <div v-bind:class="{'class1': class1}">6 I9 F# m# R4 ^( ^! o
  5.     directiva v-bind:class1 l: _3 A( h! `9 a. c/ S, l3 W
  6.   </div>
    . J( ?  h! n! i" l% L- _
  7. </div>3 f2 n" Y2 C& o  q# Y
  8.    
    " S. |/ O" j# Y7 L
  9. <script>6 S2 c9 O' E: t% Y* I. h" i, H
  10. new Vue({
    ; E* G2 D) m5 O1 i/ j$ a+ `5 ^$ x5 S% a
  11.     el: '#app',+ V; L1 n& v3 P; o9 M) H
  12.   data:{
    # Q3 J" W) ], c! l' z/ Y
  13.       class1: false5 w" j% \$ I3 x2 c7 z
  14.   }
    & j/ Y' g3 ^) o# k) N
  15. });
    : j3 J. v/ V# u- o0 ]. R
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    0 N! R$ ]2 S: Z$ p- T
  2.     {{5+5}}<br>
    & V( w; f$ I+ O$ I2 {
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    / J' X* j/ A% g& a0 |* K/ v
  4.     {{ message.split('').reverse().join('') }}
    0 I. G0 q( p8 i3 p. O- {
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    $ b% Y7 y( v$ L  }+ _, S3 H& B
  6. </div>7 e6 F2 U# I9 Y4 ]/ a  b
  7.    
    3 b4 A$ j  K( e( P- P
  8. <script>6 @' \3 a9 m$ {3 t" f. J) E
  9. new Vue({
    6 v+ Q0 X* I- z! D1 t' s
  10.   el: '#app',: e/ e8 Y" e8 A2 |6 C5 |* e5 B
  11.   data: {' f0 |/ a( G6 p& Q5 }5 {2 T) }
  12.     ok: true,) T& B3 d6 g& R) R1 H
  13.     message: 'RUNOOB',
    . O4 w4 O9 ~7 R1 j; a
  14.     id : 16 q9 N) E$ u, C0 {( }" q
  15.   }  x8 e9 c. E+ R4 Y2 @" I
  16. })
    # H" [! e! F4 v% C* w
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">% Y+ A0 \5 k9 v; t7 V6 G: r
  2.     <p v-if="seen">现在你看到我了</p>
    $ q$ i& Z4 Y3 v& x  o
  3. </div>. G0 w2 N8 N! M: M  C
  4.    
    * F' V# S* E0 ~% S8 e+ O
  5. <script>
    2 A' h0 ]% Y; J5 c3 R
  6. new Vue({  u! b" ^9 N1 g8 x
  7.   el: '#app',
    $ b% f6 d& L/ L- u* w% J0 c6 I
  8.   data: {
    0 L/ ?. S) T, C6 @) P% Q( i
  9.     seen: true
    ; f8 o/ _% t7 x
  10.   }
    - I  C9 Z3 ^9 \/ {1 B. }& J, P) [
  11. })
    ) G  o4 w9 R0 x" p% ~" Q5 Y# v
  12. </script>
复制代码
* W# [$ z+ ?* I% _' O5 \1 ^2 W
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">, C3 F  r+ b; C; U
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>4 U8 Z$ h1 o8 j  m# R& T
  3. </div>/ T+ j5 \- f8 J, x4 l2 O0 G( Q
  4.    
    7 ~, k/ \7 v5 R" m) r; ]
  5. <script>
    2 M& S3 H. H" I, @
  6. new Vue({
    ) e4 j. n. K+ y( s% k
  7.   el: '#app',
    3 M$ f) ^# O: `9 K- ]
  8.   data: {) A6 U- [; ~: W0 ]! i$ j
  9.     url: 'http://www.runoob.com'
    - @4 B# H3 |9 B, L
  10.   }$ W1 b3 V0 m; l2 ~% w
  11. })# w: p" P2 L! `2 t, z
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
5 w. o$ @2 z8 K9 @7 A
  1. <div id="app">
    ! m3 v3 h+ {% ^/ {& Q" z
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
      v% @! H0 g  M+ @7 a0 q
  3. 3 z4 w( E' d+ S9 ?+ I. k+ A6 [
  4. </div>
    ( q5 @8 Q, \) Z7 j; [4 y" {

  5. . V) n. ^5 V, V' H. g1 k6 Q
  6. <div id="app2">
    2 x) C* d% K" a# t2 \: T
  7.    <p v-for="val in arr">+ b3 h$ L/ f/ R
  8.     {{val.a}}2 k( _6 a8 o% Z5 @7 {7 X' E
  9.    </p>4 Q- m3 U  b5 s* L2 M3 ?
  10.    <a  v-on:click="tap">点我</a>
    4 k1 l3 D% r0 V- P. Y' {4 [# k: P" `3 m
  11. </div>
    & g( ?7 V) @) ^8 @3 j; D
  12. # i8 N* [% X0 a/ P1 ~2 \7 b
  13. 6 _& c2 Z' C  |' }* K( G, C
  14. <script>
    ; X6 H; ^6 ]$ ]% _5 e
  15. new Vue({/ [. i/ e  X6 |' U
  16.   el: '#app',; Y9 j( o. C7 k+ a- p
  17.   data: {  b- X1 k$ s0 z
  18.     url: 'http://www.cncml.com'
    & Z1 {) s. a! a+ E
  19.   }  p& R  g( r7 ?) Q- M% g
  20. })
    * a7 f' r; u! q* x) T1 u
  21. new Vue({
    7 @; a& E, y0 }" L
  22.   el: '#app2',4 c. J9 R; q4 C$ C+ k
  23.   data: {( q' l! ~/ }2 A( }
  24.     arr:[
    - A$ v, c: h. G1 j! E( N5 Y
  25.      {a:'bb'},) w1 ]: x# F4 F" g$ }0 h
  26.      {a:'cc'}
    7 t, d$ y4 J. W- Q9 e
  27.     ]
    % [7 f  o. {  f! I! z" r
  28.   },0 \2 v5 s( a& V0 r! {1 L
  29.    methods:{
    & C& T# w+ U# U6 l
  30.     tap : function(){
    & a+ h( m* b+ H* u4 F" s
  31.      this.arr.unshift({a:'new'})
    ' N3 }' S! S% g: s
  32.     }( B2 T% X/ I. V6 q
  33.    }. y4 h2 v6 F( n' p
  34. })
    # Z- P7 q3 q+ t3 U' F& j9 s
  35. </script>
复制代码
5 K+ [# E! e# A) d

0 e- O! q! R7 u+ w7 |$ s3 N
在这里参数是监听的事件名。

8 h+ _2 Y2 s; H/ Q2 b  Z3 }) M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:38 , Processed in 0.062161 second(s), 23 queries .

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