_
2023/5/11 18:36:464286

今天这节课我们接着对上节课所写的计数器,进行改版。之前是自动增加数值的,现在我们把它改成手动增加数值,自动挡换成手动挡。

编写页面的基本结构

在项目根目录,新建一个demo3.html文件,复制一下上节课代码,然后开始修改代码,在template里我们添加两个按钮一个为自增加按钮,一个为自减按钮。

template: `<div>
   <button v-on:click="descCounter">-</button>
   <span>{{counter}}</sapn>
   <button v-on:click="addCounter">+</button>
</div>`

vue3事件声明和绑定

接下来我们需要给两个按钮绑定事件,让它们能进行数值的增加和减少。在vue中的事件绑定和原生事件绑定是不一样的,我需要的在methods属性中声明两个方法 addCounter descCounter,添加一个alert来试试水。

methods:{
    addCounter(){
        alert("add")
    },
    descCounter(){
        alert("desc")
    }
 }

在template中为button绑定事件,需要使用 v-on 模板指令来为button绑定事件方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计数器-手动版</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app"></div>
</body>
<script>
    Vue.createApp({
        data(){
            return{
                counter:1
            }
        },
        methods:{
            addCounter(){
                alert("add")
            },
            descCounter(){
                alert("desc")
            }
        },
        template: `<div>
            <button v-on:click="descCounter">-</button>
            <span>{{counter}}</sapn>
            <button v-on:click="addCounter">+</button>
        </div>`

    }).mount("#app")
</script>
</html>

写完这部分就可以在浏览器测试一下,你写的代码是否好用了,alert试过水之后,我们修改一下响应事件的方法。

methods:{
    addCounter(){
        this.counter++
    },
    descCounter(){
        this.counter--
    }
},

好了这个例子咱们就写好了,总结一下,这节课我们需要在methods中声明事件方法的和使用v-on指令绑定响应事件。

完整代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>计数器-手动版</title>
  <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
  <div id="app"></div>
</body>
<script>
  Vue.createApp({
    data() {
      return {
        counter: 1
      }
    },
    methods: {
      addCounter() {
        this.counter++
      },
      descCounter() {
        this.counter--
      }
    },
    template: `<div>
            <button v-on:click="descCounter">-</button>
            <span>{{counter}}</sapn>
            <button v-on:click="addCounter">+</button>
        </div>`

  }).mount("#app")
</script>

</html>
视频讲解