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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10677|回复: 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">5 r2 H6 X3 u% d, q4 Q/ C3 w% j
  2.   <p>{{ message }}</p>; T5 z; J; B. n" U( L$ b
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">7 ^8 G" L! V: N+ ^6 S. o9 [, v/ s
  2.     <div v-html="message"></div>
    / I: c# `+ {- I; ^2 `) s: M" p4 ~
  3. </div>) w  _4 r  H7 q% K, r" O
  4.    
    ' H9 _# }; N# E2 e
  5. <script>
    2 X) x4 @0 m# `
  6. new Vue({2 m' m" h* e! h) |" K0 j
  7.   el: '#app',# A" v1 h. K% q
  8.   data: {
    . w8 ^. M% t2 |, a: d9 c
  9.     message: '<h1>菜鸟教程</h1>'5 Z7 g& x7 a0 j, |3 V3 f
  10.   }
    ; Z) A- S" k! l* O- U* u) t
  11. })" ?3 E" l+ w6 R; B$ f
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">7 d, ^1 T0 Z7 c, _7 g: \. @+ x; b
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">  B* u0 \* U( f. z
  3.   <br><br>
    " `1 V( \& S2 Y7 f
  4.   <div v-bind:class="{'class1': class1}">' o' K4 V% G% l7 o( y* G
  5.     directiva v-bind:class. g- z+ v1 V% t( j# L% ^& V2 t* Y9 C, Z
  6.   </div>
    ) X  f, {# S/ C
  7. </div>
    6 T  R+ i( W, w8 X9 r
  8.    
    3 ^3 H8 w* ?. l4 C  c6 A* e1 E
  9. <script>
    1 Q* @4 v: V& c4 K" }' i
  10. new Vue({
    : t1 x3 `: J  C5 G
  11.     el: '#app',% Q6 s6 T, c5 J' U0 B
  12.   data:{) [6 E) W6 `9 _1 I) a/ R
  13.       class1: false% a- u6 i) Q: f1 `: k
  14.   }
    & A4 Y1 H5 w! o% E: w% ~+ y& n
  15. });; E2 j  ^* u* d
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
    " G. j( m- J  {$ w0 o1 w" n
  2.     {{5+5}}<br>) N: s8 |, o- o; z( v& g; ?
  3.     {{ ok ? 'YES' : 'NO' }}<br>- f; m" a' l" E- \& s1 w
  4.     {{ message.split('').reverse().join('') }}
    ; G0 Z4 b7 b1 k) ?8 ~. F/ s
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>; d- w$ o% w5 F; v
  6. </div>! j) ~% x. h0 Q& u! {" ^
  7.     ; Y( o- {$ K' s: p& v
  8. <script>+ a+ U1 @7 X* U  r& e
  9. new Vue({4 a, G  \$ E: `- F
  10.   el: '#app',% z* u6 b% o9 [
  11.   data: {
    . i4 A* s. z5 F' O1 w
  12.     ok: true,
    * r2 r+ G8 w4 u( F
  13.     message: 'RUNOOB',
    + n4 a' N  c4 R: L1 L/ \
  14.     id : 10 `1 N" {& |( c( h5 w& Y
  15.   }
    # @2 W: d$ e7 b; J, v
  16. })
    / L0 v$ c: ?8 e+ y  c7 `! w2 }& o
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">6 b3 Q. ^* A, S
  2.     <p v-if="seen">现在你看到我了</p>( v0 v7 R! m3 y
  3. </div>) W! ~8 U/ e1 h/ ]" v' \# O
  4.    
    & i6 \1 Z2 u. S0 C. w. C
  5. <script>+ A0 b/ V* q' |! Q* u9 J
  6. new Vue({2 q) f- [" U) l
  7.   el: '#app',
    6 H* P# U! D* Y
  8.   data: {- F! _" A: \# u
  9.     seen: true
    8 Y  j3 M: V' Z8 W' R- R
  10.   }
    2 S3 X0 \" W5 d% [1 }  J
  11. })# d+ g0 |, R6 V  g
  12. </script>
复制代码
$ ]! |. F: \, }3 Z) {1 ^
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    & Z6 B+ G: q8 \" c
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    ! X- Q$ {& g6 m6 Y8 B
  3. </div>4 _7 Z* K9 ]  V" n/ U
  4.     " |1 x- h3 {3 g3 ~7 O3 i
  5. <script>8 F, l, Q' b4 V0 Y$ i9 @  n& n: S4 k9 }
  6. new Vue({* u: U& ?  F9 \8 ~3 V
  7.   el: '#app',' a1 z$ p: U% y+ R
  8.   data: {! E7 @/ e+ O: b$ o6 o9 M
  9.     url: 'http://www.runoob.com'
    0 V  b9 G) [/ J( c' \
  10.   }* E0 }! |' P7 V5 \+ R& P# l
  11. })" ^3 G! i  e$ n4 x' y, U& u/ \
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
3 u2 g, K  @# }- B! s
  1. <div id="app">
    : f" {; ~; u+ N, H
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    8 Q1 @9 J' u8 O: `
  3. ' n) x6 X+ e' C) W, W
  4. </div>
    " L) S: Q# M4 ?8 r

  5. $ ?8 J7 q* }+ k4 G$ ?
  6. <div id="app2">) n0 {8 i1 @8 h9 D8 q
  7.    <p v-for="val in arr">
    " ^! c( J8 I4 }. Q7 V6 `8 d5 v; |8 h
  8.     {{val.a}}
    1 C8 m; w$ K7 q
  9.    </p>
    : \" Z: v# g: B9 E" r
  10.    <a  v-on:click="tap">点我</a>
    5 Y: z6 Q7 h4 ]7 d9 ]8 N, R
  11. </div># g; ?- {0 H. s6 J

  12. 1 V$ p7 b1 t9 B' z( M
  13. 4 c/ k* e! F$ {+ c7 @$ E0 z
  14. <script>5 W+ @4 I0 v! I, v$ V* B
  15. new Vue({& C; @- @: j; S* D# N9 l
  16.   el: '#app',
    . {* j# R7 r) o4 x6 w4 Q6 R
  17.   data: {8 Q: t6 }/ A' A  B& f7 j% q! T5 B/ X
  18.     url: 'http://www.cncml.com'
    6 e- P! Z! d: n8 _. W
  19.   }+ c8 p7 A6 y+ N- Q# Y
  20. })
    , I* e% W; F3 u+ q# j: K) Z. Y
  21. new Vue({" |3 q7 n. C0 Y/ v# @( |" S3 j
  22.   el: '#app2',
    % ]9 b7 l3 X7 \- z3 a, z/ i
  23.   data: {
    " l8 L1 c2 c. l, R/ r
  24.     arr:[5 I8 s! h( ~- O$ F
  25.      {a:'bb'},
    4 S: U# Q: G: L! Y- S$ X' O# g
  26.      {a:'cc'}( X/ X$ l2 t: ^: N8 u- C. N8 A
  27.     ]/ l" J, }; v8 ~/ n( E
  28.   },
    ) j* p/ V( `" E. t) _# B) a; @( ]
  29.    methods:{
    ( C0 }3 H( F6 y, J! B7 `
  30.     tap : function(){) h4 u3 T7 e& P& H
  31.      this.arr.unshift({a:'new'})1 B. b& Y  M  T: L5 m' {7 X9 f
  32.     }
    - M" O# w: y& U) v5 p* s! C
  33.    }& b( M2 t, H% n6 f. }
  34. })
    & p" Q) B6 B, ~- j$ b+ w% R  Q/ x4 b
  35. </script>
复制代码

3 a' D3 k1 Q5 k7 _1 w, @2 e
! s/ X, X. y# P% y9 n$ f
在这里参数是监听的事件名。

* h& E2 N& u! B- I% l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 22:17 , Processed in 0.138996 second(s), 22 queries .

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