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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12478|回复: 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">
    * B" a2 B7 J/ f. q" c, v
  2.   <p>{{ message }}</p>( ?. ~4 B( _* }, ]$ H
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">! [1 g% p, c! M( |# p& l$ u
  2.     <div v-html="message"></div># [6 |  ~0 y, K
  3. </div>$ s1 k' [( i6 O9 P8 T2 Y9 J
  4.    
    3 {9 ~, ]5 w$ i: s- A
  5. <script>) g$ {0 t5 c% w+ X
  6. new Vue({  j: y) Q! m8 @# C6 H! T# F
  7.   el: '#app',3 d) i2 E% C* Y3 G
  8.   data: {
    ( ]! P  n! B$ u' O* r9 s
  9.     message: '<h1>菜鸟教程</h1>'' }0 y- s! c5 E- o! z4 W6 ~4 y
  10.   }& z( |( x2 @* A1 O5 p* |
  11. })0 Z* w* x* Y9 q. I* A" b' O
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">  v7 i( H9 c1 L# K0 g8 P# J8 J
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    0 u  d) g. X. |1 v; h5 x6 j
  3.   <br><br>8 a; s  R2 u$ `0 I# Z# G( {+ ]
  4.   <div v-bind:class="{'class1': class1}">1 M( k; S/ ~6 y, ~, z: S" ~% W3 U; a
  5.     directiva v-bind:class
    ; k# J) D% D. g' m
  6.   </div>" P& L; v" m0 \7 E- C
  7. </div>
    ' M% z! ?& w$ A6 \5 z* y6 E
  8.     4 Q& \. g' {+ M/ X+ H  m3 F
  9. <script>( r# M6 T; G# u- z9 F4 g6 q
  10. new Vue({/ H: y) N# r4 m- V7 q3 e
  11.     el: '#app',) P# T3 e; Z  y8 ?4 ]
  12.   data:{+ @# }! a7 m8 c; F0 g0 _3 {% u
  13.       class1: false6 }5 g5 H3 S1 q" o, O
  14.   }. q" c* n, A" q4 G8 K
  15. });
    - t. Z6 F# N/ I; V
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app">; v4 M1 V5 x% F, U1 p% v
  2.     {{5+5}}<br>' w% ]/ G$ c8 S
  3.     {{ ok ? 'YES' : 'NO' }}<br>
    7 U8 i9 o  O4 S$ C4 z$ s& v
  4.     {{ message.split('').reverse().join('') }}
    9 T5 j# O2 ^/ H5 O5 d
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>8 N, g% E  `0 h- g9 ~- D
  6. </div>
    4 a  p6 S2 O! J+ a& z4 [+ s
  7.    
    ; M# R4 Z) L2 s4 i4 U5 o: H9 V7 X
  8. <script>
    % X/ l0 Q1 r7 }) Y6 Q) i
  9. new Vue({& w* a8 ?% h1 ?, Y& s; v) g! g
  10.   el: '#app',
    ! w/ z/ t6 W, Y2 u$ z5 ]
  11.   data: {% }* x  x9 @4 V  e3 ?( v
  12.     ok: true,: i: _  l" I# ?& x
  13.     message: 'RUNOOB',
    0 J. x) P& a  @5 X
  14.     id : 1: n; r9 j9 C3 Z$ s  K  e
  15.   }  u1 D+ X: ?) |& a; h, X% s
  16. })* t) r$ _' M+ z$ R: m$ ]
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">
      n) Q4 k2 ]3 r$ {
  2.     <p v-if="seen">现在你看到我了</p># y1 V# k2 ?$ m; o7 B
  3. </div>" W- F' B( z! H) {5 J. e
  4.     & ^6 _' I: e" |% N' L, D
  5. <script>4 T6 G' w  z! D/ }
  6. new Vue({& x8 ~9 ^! u" F' C
  7.   el: '#app',
    1 Q8 Q3 A9 G5 A' T
  8.   data: {" r2 U1 E2 J+ @+ }" P
  9.     seen: true
    ! Q$ X6 H9 E+ D* C: y
  10.   }& B* Z, q8 q( S/ X- G
  11. })
    3 n+ l9 {) c7 P: J6 S
  12. </script>
复制代码

: j3 B, C7 V2 O& R$ v. _
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">- n9 X+ }9 e# O" ]6 u4 I; j) z
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
    3 D, c  h* x! A9 e; z0 V1 ?
  3. </div>2 c  o! O7 R' G  q& b5 H; P; W
  4.    
    ! u* @7 p/ P. u6 p$ P' j( U4 R/ x
  5. <script>7 @8 g( d$ n) h! w4 ?
  6. new Vue({) @7 R' R* Y# |, I
  7.   el: '#app',/ C9 A$ Q: X6 {8 u, v6 ^$ C/ J
  8.   data: {
    * j& ]5 N* E0 Q" _+ L! ?# t
  9.     url: 'http://www.runoob.com'' e' |3 r- k1 v, N% T6 A4 K
  10.   }
    5 X0 X' v  w% A$ C% ~
  11. })9 B* _1 @  R) y" Y3 R
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码
# k" D1 a: m4 ^& Z1 b
  1. <div id="app">
    - ]9 K- a  y. i  G, X5 ]8 P4 h
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>3 X/ S+ G6 `+ T5 `1 @0 v
  3. 3 f* m' i, Z4 L1 s4 j
  4. </div>' I: U/ x$ `1 e- q" B! i
  5. 8 C! n/ ^6 |- j$ @, F4 r
  6. <div id="app2">
    + G4 }: ^; U' v* F, @" ?0 P: u
  7.    <p v-for="val in arr">
      V: v! K* d. M; \1 `1 `7 y
  8.     {{val.a}}; e5 R5 n! D# @" @2 _+ K+ w
  9.    </p>5 f8 c# t: a, T& I
  10.    <a  v-on:click="tap">点我</a>
    ) t: U  n+ C2 s
  11. </div>) d6 K4 E4 ^  E7 c! S$ R

  12. & e# I/ H6 M- d: `: m- b

  13.   u# C, W$ ~: ~
  14. <script>
    0 W) t- r* O5 u
  15. new Vue({* L) h, B! X' u5 j- i
  16.   el: '#app',7 n0 V4 G( Q" ]6 h; L1 x
  17.   data: {. h% a; H8 R5 L( C  ~9 s1 \, @
  18.     url: 'http://www.cncml.com'7 `; j  i6 R2 j' {" H
  19.   }
    ; d( f5 l5 j3 D' @7 Q
  20. })3 B+ d- H! f; }* ~) c" _
  21. new Vue({
    0 m- B+ |$ j6 U: m+ [# p4 }
  22.   el: '#app2',7 E+ ^0 P" U' M  Q+ f9 X# R
  23.   data: {
    0 U- l, m9 o" S: U/ `
  24.     arr:[% {2 A2 A% a' i# O$ v* [* w
  25.      {a:'bb'},
    ' P; @2 o' G. G5 O) e/ f: R
  26.      {a:'cc'}
    ( t0 J2 I( L! r  ]- h
  27.     ]
    . }1 l* Z8 Q% `# ]. r3 ~7 c
  28.   },% n5 R9 s/ k( D0 P5 q( f) x" T3 [
  29.    methods:{
    " `) H" @0 s# J! J5 R/ w* r- C
  30.     tap : function(){
    + H: \! t" n$ G& r( ~
  31.      this.arr.unshift({a:'new'})
    . x9 n# i" \% p1 @  v
  32.     }
    % f) u* I+ s; T# }
  33.    }8 U$ V$ y) Z' Z0 K" A; Y" A) ?
  34. })
    - B3 s" h8 q5 l! W
  35. </script>
复制代码
7 n! L6 J. N5 S9 z
' N" m$ [* T, e/ n5 X
在这里参数是监听的事件名。

( P- M3 j$ f4 E/ d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:32 , Processed in 0.114262 second(s), 23 queries .

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