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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15970|回复: 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">: P+ }  {) ~* a% x, z# ]9 j6 x1 x
  2.   <p>{{ message }}</p>/ _! a6 A5 z: n: Z8 D4 q
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">
    # K  v2 D/ ]% O( R0 B
  2.     <div v-html="message"></div>" M, ]3 q/ s  d8 O3 `) ?- @
  3. </div>% f! S" S1 O8 ~# w
  4.    
      e+ t# `; X7 o
  5. <script>
    . W2 Q% P' H) `
  6. new Vue({9 ^. P% _' ~& |. ^6 q) J, v
  7.   el: '#app',
    ; b( _' _  X3 a; N
  8.   data: {
    ' D& P2 D; @9 L' `: E' [
  9.     message: '<h1>菜鸟教程</h1>'+ v7 F9 R: V/ }6 U! C
  10.   }
    : }% W7 U3 }* x9 @8 L4 q
  11. })3 G0 R6 P- _0 m8 L! X; Z0 p& D
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">- F. Z$ M  p5 [& k5 [6 p' z
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">: C  h( @- q& Y$ {+ m; b% D1 l
  3.   <br><br>
    0 J8 q7 V% x* Z$ ]7 z
  4.   <div v-bind:class="{'class1': class1}">' {5 a7 G( b' D* K6 i) |' X
  5.     directiva v-bind:class  n- h9 Q; A$ ~* H' z
  6.   </div>1 c# |/ z0 E9 G$ i+ G, J# f
  7. </div>
    / E1 `+ D. u! K+ h. b
  8.     7 o5 m1 i& l* r- p3 g3 K" q
  9. <script>1 K9 T2 \# U3 ?8 T
  10. new Vue({
    # `: P: a6 V4 K* _: S1 _
  11.     el: '#app',$ @1 O# F' H9 C# z1 Z
  12.   data:{5 Q+ p3 [2 a! E6 D2 M+ {
  13.       class1: false
    ! D% m7 H! h9 [# P2 M) S6 K. n6 h- n( F* s
  14.   }
    * ^( t9 Z3 T5 r7 ^0 _7 T8 i
  15. });1 k4 H+ K; m0 E. k. Y5 D
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">7 @0 _6 D: Y" o# q' |8 \9 X
  2.     {{5+5}}<br>3 s1 w! ^# H( ^
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    & i% P$ i+ t! u1 h' w% k  S9 R
  4.     {{ message.split('').reverse().join('') }}
    , ]# y& e) V. d, _/ I1 Z6 I
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>" E, y% L, w& X: q. x' q
  6. </div>
    # K0 _4 s: A3 c9 N- u, z; E- }. x
  7.     5 F+ {' O$ v7 l8 j* B/ C3 G0 N
  8. <script>/ R% z( W, B8 N& b7 Z2 p5 h
  9. new Vue({  H& y; G% R  q" |, Y4 T% B( Z; L: u
  10.   el: '#app',$ @" @- G- O. N; O4 H
  11.   data: {
    8 S5 i/ o. ]; R: q! H8 Q
  12.     ok: true,# W1 X( }8 U7 H' _
  13.     message: 'RUNOOB',
    : m- t$ r+ E8 l+ R
  14.     id : 1
    8 F. M" w5 i# T! P5 X9 q# z
  15.   }
    % ^6 o( l/ O$ F4 f2 w
  16. })
    ( p6 r- H; K1 n6 u/ \$ f; v
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
    5 Z) g: @9 r4 u  D7 i. U
  2.     <p v-if="seen">现在你看到我了</p>
    . f3 Z; ]/ J0 |! q
  3. </div>
    : Q* o3 e2 Q/ Y; J; d" Z0 X
  4.     # v" {, B# ]7 h' H2 X
  5. <script>
    ) X6 r+ C$ U, b. p( @* n
  6. new Vue({
    ' a* _3 y/ r' R: q$ B/ x  P9 P
  7.   el: '#app',
    8 p0 o* x) Q0 S( q( s2 [
  8.   data: {  @: N# u/ a! Z8 l1 ]
  9.     seen: true
    / A3 ^# _& f4 _& R
  10.   }4 `! m0 x# s: c0 @9 K) D
  11. })4 z, z4 O! |4 C! H% {$ u! Z$ A
  12. </script>
复制代码

# E& ]8 ?, w; [9 ]2 `
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    % g! `$ H' A, }! J0 `$ d; f" Y
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>2 b3 o0 G% z& O
  3. </div>
    9 n* x4 p1 q& H( ?- E
  4.     ' f# Y- {" K3 U/ t8 \$ J9 i! j& z
  5. <script>0 ^& j8 ?  c( r; z; w' W  e
  6. new Vue({) q2 D7 K" H5 S; G* u7 x1 X
  7.   el: '#app',  U0 \1 O4 P2 @; f: f
  8.   data: {
    7 d5 o6 _! [  R
  9.     url: 'http://www.runoob.com'# U; m2 ]9 ?# g- G# H. e8 |  j1 G6 ~
  10.   }
    9 A1 X% k" L  O( O- o. [4 f
  11. })
    % V2 f' S, n, P+ G8 A1 d% T4 f9 y1 H2 n
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

3 u& s6 x; c! @" y- m+ G5 `
  1. <div id="app">
    + U0 Y9 D4 [- B0 ^" u1 z
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>8 K, J* V9 U' {$ B
  3. 4 K' Y6 W7 Y9 Z. y' B, ]4 \
  4. </div>
    / p) e: c: N5 t% Q" r1 W& z

  5. & b9 q2 ?" z$ \% K  o# n
  6. <div id="app2">; ?8 u: v2 H# d! C
  7.    <p v-for="val in arr">' |! m$ |, Z. X- |6 M& |$ v4 y& Y
  8.     {{val.a}}8 x7 A4 e$ J2 V  j
  9.    </p>/ i; G5 ^# C% Y7 Z: M% u
  10.    <a  v-on:click="tap">点我</a>9 w/ a, C3 k. |( h, r
  11. </div>
    $ {$ D% M* D4 q* x9 k

  12.   @0 v, D& [" k2 p3 o/ h

  13. + p3 E4 Y: g' c5 g( W' D6 _1 W
  14. <script>  X3 ~3 N1 O% a8 G) I5 H
  15. new Vue({
    , H4 |) O+ N) V% u
  16.   el: '#app',. }& c# D8 h: ?2 n2 f
  17.   data: {9 o% n/ `. B: L! S' M) a. D$ L
  18.     url: 'http://www.cncml.com'
    * h6 j. [( u% M( ^, d+ r0 m
  19.   }+ n) R! {. u# \; F5 `' K- _
  20. })
    % t- I$ k4 N' A' r; C# A: i
  21. new Vue({$ a4 b" x9 f& @) R. p2 F- _
  22.   el: '#app2',
      o: B  O4 F8 W& S. C
  23.   data: {8 c) c: u5 Q. x) z7 D0 N/ H
  24.     arr:[$ M  F$ w# p; O5 U1 H; |
  25.      {a:'bb'},3 j% F0 X7 v9 i8 O
  26.      {a:'cc'}
      b, H( H. Q- ?; a) ~
  27.     ]6 g2 k5 q+ p2 Q
  28.   },7 a% j; k+ U& _9 p/ h, Z7 {
  29.    methods:{' L; E! i8 r' s% [; S7 i5 i8 r
  30.     tap : function(){
    , ?! K/ g8 j9 H6 ?1 w
  31.      this.arr.unshift({a:'new'})
    " y" _) c# b" I/ M7 V8 C' i6 E
  32.     }9 {/ i! E9 f5 e8 P7 c3 A/ ~5 [7 ?
  33.    }& D/ u" X# q3 L  D/ E1 T6 H: \
  34. })+ e: ]' m! j; v3 k( C# a
  35. </script>
复制代码

2 B7 C0 D' w* C8 q; Z

, D, W. S2 V4 T$ o
在这里参数是监听的事件名。

( w, X2 u/ L! r  X' r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:34 , Processed in 0.070124 second(s), 22 queries .

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