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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12482|回复: 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">
    3 d- I" `3 {' e+ k1 Y+ }+ {
  2.   <p>{{ message }}</p>
    : q* E0 d% Z" s: v. `
  3. </div>
复制代码
Html
使用 v-html 指令用于输出 html 代码:
  1. <div id="app">" U% ?3 m' p/ [3 Q6 F8 D) ?
  2.     <div v-html="message"></div>
    1 ~3 [' l  b! U' B- C
  3. </div>
    # f4 M0 ^7 h8 L9 M: N/ o
  4.    
    8 m& J9 \1 b8 G
  5. <script>& f) f( L+ X+ x1 G5 R, z+ O
  6. new Vue({: O) j$ d; g' n; v6 R; G  v0 n
  7.   el: '#app',
    9 t: U: D' Z, U
  8.   data: {6 b& Q! w0 x5 q# K" t. Y
  9.     message: '<h1>菜鸟教程</h1>'
    2 `! n* I% O2 v% D6 G) s
  10.   }
    : e( w. |) G& \) w
  11. })
    8 G" A- @" I1 A+ b# J" [0 f
  12. </script>
复制代码
属性
HTML 属性中的值应使用 v-bind 指令。
以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类:
  1. <div id="app">, a5 D  y" n# ~. i
  2.   <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
    / s' k5 P; T# ?
  3.   <br><br>+ h0 c) w5 O/ H6 G6 d6 w
  4.   <div v-bind:class="{'class1': class1}">
    7 b1 @: L2 a5 U0 U9 Y6 N4 y
  5.     directiva v-bind:class8 F* x; L' ~" ?9 l
  6.   </div>+ t& e5 h) c4 F6 G; b8 z
  7. </div>7 R; J, ^5 R/ a+ L1 o5 H
  8.     0 A- v+ d+ `4 ?# o3 N
  9. <script>
    ) u5 \# Y% L0 g8 g% v- X; C6 E
  10. new Vue({
    ! \+ A' V; y2 q  ^. r
  11.     el: '#app',) d9 ^* ?; M" Y' A
  12.   data:{4 _! J3 M% ?% c2 W
  13.       class1: false& t& M# r% D; G: ?" ?7 q" c4 k
  14.   }1 O) d3 e$ I- _( r# l3 f3 ^# ^0 H
  15. });% L) P- w, L% e! g/ |
  16. </script>
复制代码
表达式
Vue.js 都提供了完全的 JavaScript 表达式支持。
  1. <div id="app"># d6 u+ Y5 d4 ~; r, r$ R6 k5 u( m7 x1 y
  2.     {{5+5}}<br>
    ! ~) h2 u; }6 _; t1 V6 b. [- e
  3.     {{ ok ? 'YES' : 'NO' }}<br>6 \: s) |) _) ~8 {8 l% y0 h: k
  4.     {{ message.split('').reverse().join('') }}
    7 m) M  l2 S+ h5 d* M- Q3 w
  5.     <div v-bind:id="'list-' + id">菜鸟教程</div>9 j: o( }, L  @0 O
  6. </div>& I; U! R8 h* @6 b# h" ~" W/ F
  7.    
    ! ]! h5 ~7 j" G- v9 G; Y8 P- @! A
  8. <script>. K0 l4 o: ]0 X+ [7 e
  9. new Vue({$ c) T8 x3 T- p$ l# F3 i
  10.   el: '#app',7 V! ?8 h, z/ N! i- [. l9 s/ n! ^1 L
  11.   data: {
    % W, w+ w# ^, E- S8 @3 i8 p
  12.     ok: true,: B" M1 d) ^1 k# N' _
  13.     message: 'RUNOOB',% B* n! G$ @4 j9 R* Y7 ?
  14.     id : 14 Y$ b# A; [& N) ?# S! ?7 [( G
  15.   }
    5 B6 V$ I9 `/ i; R1 \! n) l5 {: D
  16. })
    " ^3 _/ x8 D4 D; c1 b3 x3 B
  17. </script>
复制代码
指令
指令是带有 v- 前缀的特殊属性。
指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子:
  1. <div id="app">5 a1 G8 D& l& x, F/ _
  2.     <p v-if="seen">现在你看到我了</p>. J# O! J% Z5 q/ W
  3. </div>
    0 k. ~1 r& g; {) d, j
  4.    
    ; ?- Y8 f  H8 A5 n7 ]# l
  5. <script>
    + n2 N$ _% A9 K# n/ U
  6. new Vue({5 H+ F, o0 u2 v# y( ]
  7.   el: '#app',
    ! e: ~5 q# E: D3 d. E* O" }7 p
  8.   data: {5 f. y  T* H/ ~" J$ `
  9.     seen: true( O: c7 w* S. S; f: E' }3 V
  10.   }
    : W, D% k) R) i8 A  h% ~; n# o$ W
  11. })# d3 y% B+ ~# w9 q: }7 n- a, Y
  12. </script>
复制代码

/ c: s& J) D7 Y) A0 h  u1 N9 Z. T0 p
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
参数
参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性:
  1. <div id="app">
    ' J) O' I  Q+ G: a- P
  2.     <pre><a v-bind:href="url">菜鸟教程</a></pre>
      a  N- l. R& p: q6 T6 E+ N$ P: Z
  3. </div>+ g$ m: V* B3 [$ T+ v' H
  4.    
    , g3 K# T# L$ X8 `7 I1 S5 Q
  5. <script>
    " `8 l- @# {1 l
  6. new Vue({# u# j6 V1 v) n1 `* j
  7.   el: '#app',
    / Y( O/ V. @; K( }; D. O
  8.   data: {" K% n3 O# W+ h1 i
  9.     url: 'http://www.runoob.com'! M! }6 L  S* _; O* @! W  m( {
  10.   }6 C# z( }+ v8 K- g; ^8 S% ?
  11. })( }% P" q! [& t+ A# E& J
  12. </script>
复制代码
在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
另一个例子是 v-on 指令,它用于监听 DOM 事件:
  1. <a v-on:click="doSomething">
复制代码

* T6 ^8 a% ?$ e
  1. <div id="app">3 O) a# G1 Z- n) b( L
  2.     <pre><a v-bind:href="url">Vue参数</a></pre>
    9 M$ ?# ~0 S# M
  3. 0 h' i: A/ T0 k  L
  4. </div>
    4 L8 u/ K, j8 n9 V4 Y0 j  S" t, u) b
  5. 4 c* B& l( @$ B$ X! @9 s
  6. <div id="app2">
    6 T; n7 l& x3 _- S* @! i
  7.    <p v-for="val in arr">& z! x& z3 o' @3 d- @2 J
  8.     {{val.a}}3 f" B* i. K- c8 r
  9.    </p>
    * h3 ~; K0 W. \9 v
  10.    <a  v-on:click="tap">点我</a>+ B$ O0 w3 H8 l6 I7 R
  11. </div>
    5 V) L& N6 V  F4 y: v

  12. 6 i) ], g  T& l: b/ A

  13. $ V7 E6 |3 e9 o5 t
  14. <script>8 A8 d3 o+ J+ }7 y3 K0 R
  15. new Vue({1 Y$ Z( a& {+ O+ l4 Y$ V
  16.   el: '#app',
    0 j6 z4 y( U! _# [( U( W% w' I3 C
  17.   data: {: U5 P5 x; I, P
  18.     url: 'http://www.cncml.com'
    6 ^- _* [8 Q: F
  19.   }" r6 s% y0 ?0 \  ~7 u* u6 H# `
  20. })6 M! u  i7 r5 R4 w, }4 Y
  21. new Vue({- T6 U  x* ^+ p( l
  22.   el: '#app2',% V9 ?& x  o# Y0 U. j5 e
  23.   data: {
    ( I0 Z% l* F, q' e6 X
  24.     arr:[( G( k( w( S$ _% f  C
  25.      {a:'bb'},& b3 }: N3 A6 U$ i
  26.      {a:'cc'}+ n6 i( T- u4 u5 z7 T7 u' d
  27.     ]: i1 Z" R  }  \' H7 E9 l/ {% l# I7 o* ~
  28.   },
    ! R- h5 [7 U( N" `, h
  29.    methods:{
    3 k0 [1 I% i  a8 \! m. H% y
  30.     tap : function(){
    3 c7 K9 G; g* z4 p  W1 Y9 f8 ~: `
  31.      this.arr.unshift({a:'new'}), \, Z" o. J- z8 ]5 y
  32.     }
    + n9 E9 s- F5 G" K- `9 Z
  33.    }
    " U: y3 w* o7 }. l; N: s: K; Y
  34. })8 _+ g$ Y, S8 y* k& e# l" u) O7 E! k
  35. </script>
复制代码
( a# f4 t/ s  X) E
7 P: W4 `8 T! C" G3 B; z& M' I
在这里参数是监听的事件名。
4 R& b) p  [7 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:37 , Processed in 0.139207 second(s), 22 queries .

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