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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14881|回复: 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">
    ) O% l/ @# ~. E$ v0 f7 s6 S
  2.   <p>{{ message }}</p>. |8 S# ]1 p* ?1 ~# I! p
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">; a; N+ D% U6 k; X- n: Y
  2.     <div v-html="message"></div>
    : w" F( Z& z  A% D2 _6 C! p' ?$ y; Z. g
  3. </div>
    0 o, Z- @+ Q" S" q# b& g* S# s$ c2 }
  4.     / v% o) }' k- @0 ]
  5. <script>
    * Y# Q0 @0 L: P7 {& U
  6. new Vue({. d! [0 D, ]9 g. c6 b
  7.   el: '#app',
    $ _/ a/ ]. o& g" p7 Z# h
  8.   data: {
    + I; f, m0 c( U# d
  9.     message: '<h1>菜鸟教程</h1>'6 S' D( d! p  k- o
  10.   }
    4 R! Z" ~2 `( G8 ]. z- c, V7 f$ E1 r) q
  11. })2 m' r& H5 k( H/ g# [6 V# v3 k
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">! N6 l) V* r# {- |) E* L2 h
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    . |( E* S. ?6 a. m0 k( E9 h
  3.   <br><br>6 E8 t! w; h6 }5 a7 `8 c
  4.   <div v-bind:class="{'class1': class1}">3 O3 Y( G" `, L7 V: [) ^  }
  5.     directiva v-bind:class% a* n% q, g. O  I8 L' u. @  D
  6.   </div>
    8 c1 w; m+ T- b6 Y/ a
  7. </div>/ g0 u2 q$ @# s$ i
  8.     ( A* I7 {6 X) B3 H5 z9 E$ |
  9. <script>+ I- c, N6 u* M" B8 |7 N# L
  10. new Vue({% }* V; y. Z. J7 P; C1 \) R1 B& `
  11.     el: '#app',! K5 x- P8 k& K5 [
  12.   data:{8 J4 t& w: ~0 F9 _
  13.       class1: false
    / g/ o2 o% H# Q5 [7 Q" K
  14.   }5 N. D! H  h7 f9 |4 l" ^6 t* E
  15. });
      d% O3 I0 v6 o/ W# K! @: d& s
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">3 M' R/ x. n. _/ h
  2.     {{5+5}}<br>
    9 t# g$ e% H" S; r5 F$ P
  3.     {{ ok ? 'YES' : 'NO' }}<br># e' D0 Z8 e/ F( g4 l0 T
  4.     {{ message.split('').reverse().join('') }}3 x8 O" x+ n( H( Q& z" j' z
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    ! S3 k$ I+ j1 u* u6 K
  6. </div>4 b/ v/ f) ?# `
  7.    
    6 U9 e& `3 h5 T# O, h9 L- d
  8. <script>
    % _8 }7 D, ~, k  n
  9. new Vue({
    # T9 S% M  d! I* Y; |6 Y
  10.   el: '#app',
    ( w. C: q8 l& }4 c' o) h
  11.   data: {
    8 J+ H; B2 y7 R+ V' q$ q
  12.     ok: true,
    / }. U0 Y8 d% B3 h
  13.     message: 'RUNOOB',
    . r9 E5 z. O7 @4 p- O
  14.     id : 1" ^! G$ `* l- J" C$ A& a- f: ^
  15.   }1 R+ q, ?& ^. W7 A& j7 [
  16. })" G2 S% Q1 I& i* H; ~
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">/ Q: {# H7 h: [, N* ^* ~3 Y+ H
  2.     <p v-if="seen">现在你看到我了</p>
    % \/ Z' O0 |8 X
  3. </div>3 f& Y& K% W% G4 _
  4.    
    # R/ B7 i: \1 [6 Z0 W4 M1 U5 F
  5. <script>" M5 t( P" X- D" k4 `- \
  6. new Vue({
    & m9 G8 D' s% U& K- n8 G
  7.   el: '#app',4 }( w* F  [! W$ _+ n
  8.   data: {; X1 Y. b$ F) S" f
  9.     seen: true
    & J8 A1 v5 _3 Z6 c! ?1 K! D( @
  10.   }
    + T, C4 `5 U. ^" f# u
  11. })
    8 k: y  L% S2 ]0 @- K" C! E
  12. </script>
复制代码

4 o' C. W$ L# X: h  i
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">2 P/ I/ W+ v  k
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    6 @7 S8 g( H* L+ w; k# Q) P# j/ s' @4 |
  3. </div>
    " n- t" o# ^/ h7 P% I# Y1 G
  4.    
    + ^- h5 h) k) ~0 h% Z+ c
  5. <script>0 R6 L; J( M  v- \  ~
  6. new Vue({# c3 c/ `9 D1 @$ t8 D
  7.   el: '#app',6 t- S- f- @* m/ Q0 F4 j
  8.   data: {
      g5 I) k  F9 V
  9.     url: 'http://www.runoob.com'
    . r5 C: g* U6 }  ~2 X6 g
  10.   }
    ; x! J& T, X* L0 }
  11. })1 s0 O8 K* T9 J# n  Q
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
  L4 V5 |2 J2 p
  1. <div id="app">. W) m, ~! E) O1 w3 F- E1 Z
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>: j3 Q  n1 k5 n6 A& J4 J
  3. 7 ~, h- X9 @3 n' I4 s+ t
  4. </div>2 }5 N7 W+ Z* D# M" C
  5. 0 u# U% n6 {6 D
  6. <div id="app2">
      _4 }8 b* C; Q: l- K4 ^" S
  7.    <p v-for="val in arr">( u$ R5 f  L0 ]. B: s1 Y  ]
  8.     {{val.a}}
    / ^# ^3 e$ S8 y: p! N6 u7 X
  9.    </p>
    , I' F/ e( m) z6 \
  10.    <a  v-on:click="tap">点我</a>$ `0 U" r. a/ E3 ?; x; ?3 Z6 m
  11. </div>
    . l6 m; V* I- r: F( G; Q
  12. : v' ^8 V& W0 _8 T" _; J1 c3 }

  13. ( Y/ F, g3 D- k! E
  14. <script>9 Z' f: r; p+ P. Y" z
  15. new Vue({; Y1 E+ Y. N) @. K
  16.   el: '#app',+ \1 Y7 z* e6 o& O. J% k. j
  17.   data: {+ _- M% l8 U, j- R: R4 z
  18.     url: 'http://www.cncml.com'8 |7 G: ^5 O$ i  |; d
  19.   }
    6 H! L* `7 A& p6 _& U& A
  20. })
    ( U% B# g# S" O4 n* G2 H3 |6 _
  21. new Vue({$ \, {2 [3 ^8 O4 B% \5 o
  22.   el: '#app2',8 v) |  b) j" ?& j, X+ X
  23.   data: {" ?; @* k3 f9 I3 w0 N
  24.     arr:[
    , D- }( J1 b4 `% x0 h
  25.      {a:'bb'},2 s2 q! R5 N* N% D- N& I& \& f: n
  26.      {a:'cc'}$ x, W2 H- ]# G! y. d% ~$ ~, R
  27.     ]3 E7 S/ q8 r# K2 @/ _& X" {+ V
  28.   },$ H9 s% T0 V8 l# P7 _& r
  29.    methods:{" |( y% o( P( e8 d) I! V
  30.     tap : function(){
    % ~9 s5 {/ n" \
  31.      this.arr.unshift({a:'new'})
    ( Y5 L# I0 ~* u8 T! y* {3 P
  32.     }
    4 e% y' _; r8 w8 p7 _
  33.    }
    . @, Y- A# P0 ?8 g
  34. })' ^7 |  z5 ?# D( O' q7 k' \, }7 P
  35. </script>
复制代码
1 N; O$ d* O8 P

% S) A: N8 B6 T  Z: k$ j3 }3 M
在这里参数是监听的事件名。

1 Q3 P4 |$ S: L3 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:56 , Processed in 0.064114 second(s), 23 queries .

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