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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15011|回复: 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. P/ ~# N& i
  2.   <p>{{ message }}</p>
    . B. W/ S" c$ d. e
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    1 b0 v+ w$ ~1 H' D8 ?
  2.     <div v-html="message"></div>% w, B/ U8 r: U& D
  3. </div>
    & L- G6 S* K+ C8 q" E* \
  4.    
    * O1 |: T( p; J1 y5 ?' J8 d
  5. <script>9 d% G1 M' ^- Q2 p3 k
  6. new Vue({
    5 U0 X; W% c1 Q6 J8 E' u
  7.   el: '#app',
    9 t9 D* c; i4 ^* {& }
  8.   data: {
    & Q- z9 ]* L' V3 t, T& K
  9.     message: '<h1>菜鸟教程</h1>'
    # L8 a! Y3 B$ B( ^
  10.   }. g# G1 d8 f4 L. ^# U& C
  11. })3 X8 r4 b$ G/ s! G1 k9 o7 N% @/ m$ `
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">
    . ^$ Q( ?7 P$ ~
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    - N" E  j/ R7 e, n9 G
  3.   <br><br>
    . P+ H2 Q% v+ x& y
  4.   <div v-bind:class="{'class1': class1}">
    ( Y3 C5 ]/ k. X8 ^2 Q
  5.     directiva v-bind:class2 d# U* J- j1 p( @" k4 e+ u
  6.   </div>
    7 N; f8 V. ]4 m& R3 a1 v
  7. </div>
      P- B: d. v9 w4 ?, G9 C2 N
  8.    
    , m7 i& e" r8 U) K7 G! [' R9 J% a
  9. <script>" I; i, L( a* c( u( d7 |- G
  10. new Vue({
    2 X$ Z$ q( z6 ]1 ~
  11.     el: '#app',; N4 o/ d. E1 ~
  12.   data:{% n* N4 |1 }. C( f, w: w# v% k
  13.       class1: false
    : j2 {( ?9 k1 u. Q
  14.   }; ~2 S' Z0 `1 y5 Y% `4 A* J+ G- e
  15. });: E$ F6 a1 Y. I! o
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">/ M* ^% p& R6 P6 }$ ^1 ^
  2.     {{5+5}}<br>
    0 q1 P- Y" N' b) b! ^) z8 L5 @
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    6 m- S% X; i- [9 m' P
  4.     {{ message.split('').reverse().join('') }}
    . h6 b9 J6 P4 h0 w: U/ v. r$ S4 X) O: I
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    : S& a( N# a* W: @
  6. </div>
    6 }0 D8 w3 f' O" b5 u) _# U
  7.    
    + \: C# u& G9 m9 d8 G6 K3 q
  8. <script>+ h+ z8 b; h( r: |7 ~% V# _
  9. new Vue({
    9 o' ?3 c6 A5 `1 S  s* l; q3 i
  10.   el: '#app',
    ) q! T0 m4 ^0 V6 D. V8 a
  11.   data: {
    # n! K, r: P4 t2 w$ x  E$ B5 n. k
  12.     ok: true,' R' X: ]; C3 U6 ?" q
  13.     message: 'RUNOOB',
    $ ~# l7 L5 @2 P
  14.     id : 15 b1 I6 w) k! a' o& \7 |; Z& ~0 x- R; {
  15.   }- m$ \0 Q* u' x9 G( ~2 q
  16. })4 T9 {( }9 u; \/ _5 {. K  s
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app"># J8 }9 H# a7 \
  2.     <p v-if="seen">现在你看到我了</p>
    1 G4 h2 x9 z. I. ?& }6 t
  3. </div>) l0 Z, f, v, c9 F" i0 J
  4.    
    # U, l, F& y6 L3 p2 f( d
  5. <script>. d2 k( [! j& {+ [! m! M0 [
  6. new Vue({
    5 `  j# G" R& v& h) d4 N3 O
  7.   el: '#app',
    . u+ b6 Y+ `# I' _
  8.   data: {7 G9 B& b! O5 Z0 l/ T
  9.     seen: true/ }1 X% K2 i: I, c
  10.   }" V2 ?  [, a! `
  11. })' f  J. L, m" d3 j4 n1 @% }3 i
  12. </script>
复制代码
: N! _  E" Q$ K: S: m
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    / G6 a1 o! {' }
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    " w3 z0 _1 ]1 U/ d- S0 @; O
  3. </div>
    4 h! O- F# H0 J3 n/ y: Y, L9 u
  4.    
    # d3 s" l0 G: o+ L: {
  5. <script>
    ! r4 f' \1 V1 D4 a  W& N( O: B9 e
  6. new Vue({5 t, k( V/ X8 `9 N/ U
  7.   el: '#app',
    - g$ ]0 b# O) V4 J' W
  8.   data: {3 h8 Z. v$ E5 I3 ]0 O
  9.     url: 'http://www.runoob.com'
    % j0 P* c. B. Q; o! l- B0 B
  10.   }3 V# ^9 r1 o/ l1 _
  11. })
    5 A% [. `9 U0 l
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
3 Z: E# G, ?& ~6 N) b. V6 a
  1. <div id="app">+ e$ {  V3 i) L* N2 p7 O) v
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>0 C+ l+ K. {, C: Q
  3. 0 r2 n# X/ n1 s# `- ]
  4. </div>
    " K( {/ l" K( z9 G) B

  5. 4 @) j8 V7 }4 m. L7 p
  6. <div id="app2">
      ^: n8 T% ^- B7 w& k& c
  7.    <p v-for="val in arr">7 t( o+ _: w6 F: |. b6 T& I- w+ }
  8.     {{val.a}}8 |" T, d8 ?8 y5 d; ]  l( S
  9.    </p>
    * @4 _$ B: Y+ \% u1 p
  10.    <a  v-on:click="tap">点我</a>
    1 G8 U, k; t- m( }& z( ~& q
  11. </div>
    7 P! _$ @& R$ G& e/ s7 i

  12. 1 X0 r6 T! b) d  e/ V" M
  13. 5 o9 }# `1 g! @: e2 i* \0 C: [
  14. <script>6 U* o7 b4 N. ?" a, T0 S( V
  15. new Vue({: X; J# b/ A+ p# M/ r, ?
  16.   el: '#app',
    , ]8 T7 J5 V# ^4 L% z+ z& r
  17.   data: {
    $ z; J  s) z7 q, V
  18.     url: 'http://www.cncml.com'0 m; y/ T* _, S4 v6 i" M+ T$ S6 K
  19.   }& ]: y! S  Z3 q3 [* e. v
  20. })* Q2 u5 n' q# j8 M; {
  21. new Vue({/ s; P# ^- |- a
  22.   el: '#app2',* n, A" Y& E: T, c4 Y% N
  23.   data: {! G' O5 E1 ~& |* A. Q% M
  24.     arr:[
    % b! h8 q( z2 D* B
  25.      {a:'bb'},
    + y, V4 x& [6 T
  26.      {a:'cc'}
    * f/ p% b$ ]- w! z
  27.     ]: j  t/ ]" j" _* Z! A5 z7 M$ ]
  28.   },
    0 x/ M. e8 M0 x6 O  Y2 x
  29.    methods:{) @& |9 \8 D, M, N  ^1 q! q
  30.     tap : function(){# y1 N6 I) z- m" s! Q/ B
  31.      this.arr.unshift({a:'new'})
    0 n9 _# d/ m. S
  32.     }+ i: Y' x# ~% N3 A
  33.    }
    ( O$ H3 t/ g, S. |: m
  34. })
    & a3 u/ p  z" ?/ C+ j# }) \
  35. </script>
复制代码
( _+ e; O) ~8 `( v7 k2 i

, Z: Z; K7 z; h" A8 i; ^( ~/ M
在这里参数是监听的事件名。
, W# v7 ~: j% S+ `, t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:44 , Processed in 0.058884 second(s), 23 queries .

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