zoukankan      html  css  js  c++  java
  • Vue学习笔记【4】——Vue指令之v-on

    Vue指令之v-on

    v-on指令介绍

    1. 直接使用指令v-on

    2. 使用简化指令@

    3. 绑定事件代码:@事件名="methods中的方法名称"

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    <body>
      <div id="app">
        <!-- Vue 中提供了 v-on: 事件绑定机制 -->
        <input type="button" value="按钮" v-on:click="alert('hello')"> 
        <input type="button" value="按钮" @click="show">
      </div>
      <script src="./lib/vue-2.4.0.js"></script>
      <script>
        var vm = new Vue({
          el: '#app',
          data: {
            mytitle: '这是一个自己定义的title'
          },
          methods: { // 这个 methods属性中定义了当前Vue实例所有可用的方法
            show: function () {
              alert('Hello')
            }
          }
        })
        //原生js代码
        /* document.getElementById('btn').onclick = function(){
          alert('Hello')
        } */
      </script>
    </body>
    </html>
    

      

    案例:跑马灯效果

    实现步骤

    第一步:导入Vue包

    第二步:创建一个要控制的区域

    第三步:定义一个vue实例

    第四步:编写具体代码

    代码分析
     一、让文字动起来
      1.给(唱起来~)按钮绑定一个点击事件 指令:v-on  @
      2.在按钮的事件处理函数中,写相关的业务逻辑代码:
      拿到msg字符串,然后对字符串进行操作,substring
      来进行对字符串的截取操作把第一个字符串截取,放到最后。
      3.为了实现点击一下按钮,自动截取的功能,需要把2中的代码
      放到一个定时器中去。
     二、让文字停止
      思路:利用setInterval返回的intervalID来停止定时器。但是
      由于外部的函数不能获取到setInterval函数中的数据,所以我们要把
      IntervalID的值获取后放入到data中。
      1.在data中定义一个变量来存放intervalID,初始默认值为null。
      2.为(停!)按钮绑定一个点击事件 指令:v-on  @
      遇到的问题:每点一次唱起来按钮,都会开启一个定时器,我们要在开
      启定时器之前做一个判断,如果intervalId不为null,说明已经开启了
      一个定时器,不必再新开启,如果intervalId为null,则开启定时器。
      3.判断intervalID是否为null时出现的问题:
          如果只写if(this.intervalId != null) return; 这一句,
      这种方法点击完唱起来按钮后再点击停止按钮会出现一个问题——唱起来按钮失效了,
      点击它文字不会再动起来,因为点击按钮后,虽然定时器被停止了,但是intervalId
      没有初始化回null,每次都会进入这个if语句,永远不能再开启定时器,因此,每次
       点击停止按钮后,都要吧this.intervalId重新赋值为null!
    三、注意:
      ①在vm实例中,想要获取data上的数据,
      或者调用methods中的方法,必须通过this.属性名或this.方法名来访问,
      这里的this,就表示我们new出来的VM实例。
      ②VM实例会自动监听其data中所有数据的改变,一旦发生变化,立即更新,
      同步到页面中。程序员只需要关心数据,不需要考虑如何重新渲染页面。

    代码实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <!-- 第一步:导入Vue包 -->
        <script src="./lib/vue-2.4.0.js"></script>
    </head>
    <body>
        <!-- 第二步:创建一个要控制的区域 -->
        <div id="app">
            <!-- 第四步:编写具体代码 -->
            <h4>{{ msg }}</h4>
            <input type="button" value="唱起来~" @click="sing">
            <input type="button" value="停!" @click="stop">
        </div>
        <!-- 第三步:定义一个vue实例-->
        <script>
          var vm = new Vue({
            el:'#app',
            data:{
                msg:'大山滴子孙~呦!~~~~~爱太阳~咯~~~~',
                intervalId:null //在data上定义intervalID
            },
            methods:{
                sing(){//es6写法
                    if(this.intervalId != null) return; 
                    // 使用es6语法中的箭头函数来写
                    this.intervalId = setInterval(() => {
                    //获取字符串开头的第一个字符
                    var start = this.msg.substring(0,1)
                    //获取字符串除开头第一个字符外的其他字符
                    var end = this.msg.substring(1)
                    //重新拼接得到新的字符串,并赋值给this.msg
                    this.msg = end+start
                    },400)                
                    // 原来的写法
                    // var _this = this
                    // setInterval(function(){
                    // //获取字符串开头的第一个字符
                    // var start = this.msg.substring(0,1)
                    // //获取字符串除开头第一个字符外的其他字符
                    // var end = this.msg.substring(1)
                    // //重新拼接得到新的字符串,并赋值给this.msg
                    // this.msg = end+start
                    // },400)   
                },
                stop(){//停止定时器
                    clearInterval(this.intervalId)
                    this.intervalId = null
                }
            }
        })  
        </script>  
    </body>
    </html>
    

      

  • 相关阅读:
    springboot 基础
    spring 基础
    spring MVC 基础
    windows shell
    oracle 创建用户和视图并授权
    maven 安装本地依赖
    JAVA ssl 证书
    mybatis 递归
    MyBatis基础
    当年的毕设-cpf (一个简易的协议 fuzzer)
  • 原文地址:https://www.cnblogs.com/superjishere/p/11872984.html
Copyright © 2011-2022 走看看