1 插值

数据绑定最常见的形式就是使用“Mustache(胡子)”语法 (双大括号) 的文本插值

{{ message}}

data.message变化时, 视图{{ message}} 也会变化, 单向绑定
image.png

2 v-bind

v-bind: 用于响应式地更新 HTML 属性
绑定数据和元素属性, 可简写为:
<a v-bind:href="url1">新用户免单活动开始了</a>
url1 变化时, 视图”url1”也会变化, 单向绑定
可简写为 <a :href="url1">新用户免单活动开始了</a>

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <a href="#">{{message}}</a>
  11. <span>{{hello}}</span>
  12. <hr>
  13. <a v-bind:href="url1">新用户免单活动开始了</a>
  14. <br>
  15. <!-- v-bind: 可简写为 : -->
  16. <span :title="showmessage">鼠标放在这里</span>
  17. </div>
  18. </body>
  19. <script>
  20. var vm = new Vue({
  21. el: "#app",
  22. data: {
  23. message: "领取优惠券",
  24. hello: "hi hi you you",
  25. url1: "http://card.gbdjob.cn/",
  26. showmessage: "页面加载时间 " + new Date().toLocaleString()
  27. }
  28. })
  29. </script>
  30. </html>

不光是href属性可以被v-bind指令绑定,任何属性都可以被绑定
例如,绑定src属性、class属性

  1. <div class="app">
  2. <a v-bind:href="url" v-bind:class="klass">click me</a>
  3. <img v-bind:src="imgsrc">
  4. </div>
  1. <script>
  2. var app = new Vue({
  3. el:'.app',
  4. data:{
  5. url:"https://www.baidu.com",
  6. imgsrc:"https://cn.vuejs.org/images/logo.png",
  7. kclass:"btn btn-default"
  8. }
  9. });
  10. </script>

3 v-model

v-model主要是用在表单元素中, 实现了双向绑定

  • 当data.username变化时, 视图会发生变化
  • 视图中输入新的内容时, 也会反过来修改data.username

    1. <table>
    2. <tr>
    3. <td>用户名</td>
    4. <td><input type="text" name="username" v-model="username"></td>
    5. </tr>
    6. <tr>
    7. <td>密码</td>
    8. <td><input type="password" name="pwd1" v-model="password1"></td>
    9. </tr>
    10. ...

    实际上v-model基本上只会用在input, textarea, select这些表单元素上。
    因为只有这些表单元素的值能被修改

    4 v-on

    v-on: 用于监听 DOM 事件, 主要用于按钮中, 可以简写为@

    1. <body>
    2. <div id="app">
    3. {{name}}
    4. <button v-on:click=add>按钮1</button>
    5. <button @click=sub>按钮2</button>
    6. </div>
    7. <script>
    8. var vm = new Vue({
    9. el: "#app",
    10. data: {
    11. name: 'python',
    12. },
    13. methods: {
    14. add: function(){
    15. alert("add");
    16. },
    17. sub: function(){
    18. alert("sub");
    19. },
    20. },
    21. });
    22. </script>
    23. </body>