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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14876|回复: 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">
    7 r! ^( ]1 p) u! }) ~  z/ J, h
  2.   <p>{{ message }}</p>
    4 l  R) t) L. h) u2 |' b
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">) g  R& a) R. p
  2.     <div v-html="message"></div>
    " O5 v+ ?; y* R( X
  3. </div>
    8 v0 M! Y3 K& s+ m8 a$ W; ]
  4.     : P, T" V0 B: V1 U' ]
  5. <script>
    * ]& Q# ^6 d. y* L
  6. new Vue({# f' M8 C# w$ X4 |, a% E4 C
  7.   el: '#app',$ ^5 j. c0 |7 q) B6 C. n1 d
  8.   data: {8 X* x1 t1 E; X8 G2 K0 D
  9.     message: '<h1>菜鸟教程</h1>'
    3 y+ B/ y* B! D! `
  10.   }
    ; F* G$ ^* \1 }' j, I& K6 R
  11. })
    + O6 C5 n, n6 y! M# j. C% u
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">/ ^5 C5 H8 H& b, [4 c8 F* \0 A
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">, B% u, b  B" t9 _2 _
  3.   <br><br>7 q$ q* A' a# \, ?: M" D( g
  4.   <div v-bind:class="{'class1': class1}">
    5 ?* P) E. u9 J6 X: U/ ?7 I
  5.     directiva v-bind:class
    6 d( _+ @7 m  b7 ^
  6.   </div>' w" h. U4 e! H7 y3 T4 i0 I
  7. </div>4 y& K7 j) L, U+ ^3 c, G
  8.    
    $ i1 |. c4 ~$ A" ]# C# B6 y
  9. <script>+ q- ?4 y4 a: Q' G$ J$ p% B
  10. new Vue({
    7 d- \6 ~  O: ]  k
  11.     el: '#app',
    % v9 E9 H; [+ d: |2 T! X
  12.   data:{2 ^. ?8 c! f* a) j6 l2 Q2 G
  13.       class1: false. M; k' C$ u. [  B5 R' H
  14.   }
    7 u( k" A/ u0 W& b
  15. });: p( b; i% q' S6 U6 X1 c( ]+ s
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">
      C. N! o, h4 K4 H* J
  2.     {{5+5}}<br>9 x6 r: |, ~) L
  3.     {{ ok ? 'YES' : 'NO' }}<br>5 m6 |7 l4 P. [* V. e6 _0 |6 h
  4.     {{ message.split('').reverse().join('') }}
    9 e/ b5 ^% p3 @% G% K! y) I8 a
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>
    , _3 q8 i2 M. X4 z: c3 \
  6. </div>1 \' N$ g; p* \2 G' e
  7.     ( x8 Z  s" ~2 }2 J' U# z# a
  8. <script>
    0 ~  k* z7 _% i( [. b
  9. new Vue({
    * M$ y/ v- P! t+ L, B4 m! H
  10.   el: '#app',3 T% v' l9 Z" X" t
  11.   data: {
    4 y! h3 @5 A) c
  12.     ok: true,
      H; \) B3 [9 R( v9 Z3 ^. y
  13.     message: 'RUNOOB',
    $ Q2 p3 N4 y# W! D/ n
  14.     id : 1
    9 ?  T  S$ ^& i3 a5 e4 d, X5 I
  15.   }; A0 N* e. t/ E8 K/ D/ S$ L
  16. })
    ! c* B- ^  V. K7 z: l
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">( i8 h& d3 v( J- G9 z7 k4 _% E
  2.     <p v-if="seen">现在你看到我了</p>9 J  u" L* c6 _* c8 D) G
  3. </div>
    4 r+ X0 C3 S+ w; p3 V+ M. m3 L1 A
  4.     7 u$ b: a8 G2 Q5 W
  5. <script>
      g" A, w( Q8 [( G
  6. new Vue({" E/ q: o2 l' J5 A$ p" p
  7.   el: '#app',9 [: `- o, Z* T; W" k* Y( p
  8.   data: {
    4 x7 n3 Q4 O: c7 k3 K
  9.     seen: true0 F" R  g& [) n8 j$ t4 S+ j9 O
  10.   }( O( e8 [$ N+ r0 E2 o% G7 ]
  11. })6 w* ^$ D1 C6 c5 w* }; ~, j. x
  12. </script>
复制代码

- T) L8 k0 S& Z8 u6 ^7 I  ]
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    6 ~, ~( a4 c7 X- e( ^# ~5 H
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    : E# j% _9 I8 q( w7 _1 y8 e
  3. </div>
    6 l( u2 t; F* `1 r0 R* c' i
  4.     6 a. t+ b0 F% S" v( P: H
  5. <script>
    5 z0 f0 v' i  F: T" N" E* C
  6. new Vue({
    2 Y: i" ~6 S% D2 ^  y9 E* H8 l
  7.   el: '#app',9 }0 l% P% w6 w; L) {& p2 M: o
  8.   data: {
    $ \* S4 K% _7 G) l1 h* ^. \
  9.     url: 'http://www.runoob.com'( P) u' z4 z3 u, Q- y2 O
  10.   }
    4 r5 U9 G: p" f1 w, @% T2 s
  11. })
    & ]8 ^; K) h$ c. A
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

- ~0 O! y! ?0 Z
  1. <div id="app">
    / s# W9 w2 B3 X# x8 _3 ^7 S: [' i
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    6 e3 u" M# I% Q: ^

  3. 9 u  p: }, c) N  `0 u, P+ n! Q
  4. </div>' e1 }5 y: n5 w( z' Q
  5. ' M$ }# B8 m1 u8 W% S" `6 h
  6. <div id="app2">
    0 C8 @* y2 H  b( h/ {
  7.    <p v-for="val in arr">$ |- O; D2 y- ?, \3 P' J2 u) U
  8.     {{val.a}}- ~  g6 k2 V( ]: {) z8 i
  9.    </p>1 b$ J4 U2 K$ H& Z
  10.    <a  v-on:click="tap">点我</a>1 P' c/ `* n: |' K
  11. </div>" B) L2 r; y& G

  12. ! G% `' t4 h8 L2 P3 b; L
  13. 5 D0 u- Y6 c! M+ ^: X
  14. <script>  d0 Q4 r$ z" X$ z; d2 F2 z
  15. new Vue({
    ; E9 `9 a9 I- o+ H$ y
  16.   el: '#app',
    # Q' Y% O- I/ n% C) l% o  y
  17.   data: {& [* I2 ~4 H7 Q3 Y- M: l/ K
  18.     url: 'http://www.cncml.com'5 X) A/ q, ~, ?# {( B, _
  19.   }
    " H. d0 E6 B0 }8 c# L8 T* X( t
  20. })( Q8 F+ c; a# u1 e+ C0 e' \
  21. new Vue({% C9 U: q$ B6 |  U
  22.   el: '#app2',3 W1 a. p% t0 f, D
  23.   data: {
    9 K& L2 E8 K) Y& g8 I
  24.     arr:[2 I7 j  j3 a2 I+ V/ O8 d. c
  25.      {a:'bb'},. _+ ^) x# a% O9 `: `* h8 S
  26.      {a:'cc'}
    ; F1 Q+ o; k- J" ?# K
  27.     ]6 M! `+ N# E/ S7 f0 O5 D: I
  28.   },
    7 [. S' k9 }  y# o
  29.    methods:{
    3 b& T0 r! i. x9 q* H" t
  30.     tap : function(){
    ' O% Q# \- x( h- r% i( C) l$ E
  31.      this.arr.unshift({a:'new'})0 }, ~/ p) U7 X6 u; Z  x
  32.     }
    ' ?: {9 o/ a( j/ m
  33.    }5 y; v# h, i! U2 b% [
  34. })# a. ]4 B0 B. s* h) t9 C) a
  35. </script>
复制代码
1 j( q6 [) Z* ?) v2 L. e
0 H, ]  a* \. |; ~# ]
在这里参数是监听的事件名。

  u6 n1 Y+ H7 N2 j* s/ x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:42 , Processed in 0.071618 second(s), 22 queries .

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