首页 > 其他分享 >vue.js学习(day 5)

vue.js学习(day 5)

时间:2024-11-22 21:50:52浏览次数:3  
标签:box vue day font api words js data newValue

 watch侦听器(监视器)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-size: 18px;
      }
      #app {
        padding: 10px 20px;
      }
      .query {
        margin: 10px 0;
      }
      .box {
        display: flex;
      }
      textarea {
        width: 300px;
        height: 160px;
        font-size: 18px;
        border: 1px solid #dedede;
        outline: none;
        resize: none;
        padding: 10px;
      }
      textarea:hover {
        border: 1px solid #1589f5;
      }
      .transbox {
        width: 300px;
        height: 160px;
        background-color: #f0f0f0;
        padding: 10px;
        border: none;
      }
      .tip-box {
        width: 300px;
        height: 25px;
        line-height: 25px;
        display: flex;
      }
      .tip-box span {
        flex: 1;
        text-align: center;
      }
      .query span {
        font-size: 18px;
      }

      .input-wrap {
        position: relative;
      }
      .input-wrap span {
        position: absolute;
        right: 15px;
        bottom: 15px;
        font-size: 12px;
      }
      .input-wrap i {
        font-size: 20px;
        font-style: normal;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <!-- 条件选择框 -->
      <div class="query">
        <span>翻译成的语言:</span>
        <select>
          <option value="italy">意大利</option>
          <option value="english">英语</option>
          <option value="german">德语</option>
        </select>
      </div>

      <!-- 翻译框 -->
      <div class="box">
        <div class="input-wrap">
          <textarea v-model="obj.words"></textarea>
          <span><i>⌨️</i>文档翻译</span>
        </div>
        <div class="output-wrap">
          <div class="transbox">{{ result }}</div>
        </div>
      </div>
    </div>
    <!-- <script src="./vue.js"></script> -->
     <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> 

     <!-- 引入axios.js库 发送HTTP请求 -->
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
      // 接口地址:https://applet-base-api-t.itheima.net/api/translate
      // 请求方式:get
      // 请求参数:
      // (1)words:需要被翻译的文本(必传)
      // (2)lang: 需要被翻译成的语言(可选)默认值-意大利
      // -----------------------------------------------
      
      const app = new Vue({
        el: '#app',
        data: {
          words: '',
          obj: {
            words: ''
          },
          result:'', //翻译结果
          // timer:null //延时器id(存它只是为了清除,与页面渲染无关,因此可以省略)
        },
        // 具体讲解:(1) watch语法 (2) 具体业务实现
        watch:{
          //该方法会在数据变化时调用执行
          //newValue新值,oldValue旧值(一般不用)
          // words(newValue){
          //   console.log('变化了',newValue) 
          // }

          // 使用 async 和 await 来使异步代码更加简洁和易读。
          'obj.words'(newValue){ //方法名不能直接出现特殊字符,出现要加引号
            // console.log('变化了',newValue)

            //防抖:延迟执行 -> 干啥事先等一等,延迟一会,一段时间内没有再次触发,才执行
            // 使用Axios发送一个GET请求到指定的API接口 
           clearTimeout(this.timer) //用于取消先前设置的定时器的方法。
           //存当前延时器 
           this.timer = setTimeout(async() => {
              const res = await axios({
                url:'https://applet-base-api-t.itheima.net/api/translate',
                params:{
                  words:newValue
                }
              })
              this.result = res.data.data 
              console.log(res.data.data)
           },500)
            
          }
        }
      })
    </script>
  </body>
</html>

 

                <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-size: 18px;
      }
      #app {
        padding: 10px 20px;
      }
      .query {
        margin: 10px 0;
      }
      .box {
        display: flex;
      }
      textarea {
        width: 300px;
        height: 160px;
        font-size: 18px;
        border: 1px solid #dedede;
        outline: none;
        resize: none;
        padding: 10px;
      }
      textarea:hover {
        border: 1px solid #1589f5;
      }
      .transbox {
        width: 300px;
        height: 160px;
        background-color: #f0f0f0;
        padding: 10px;
        border: none;
      }
      .tip-box {
        width: 300px;
        height: 25px;
        line-height: 25px;
        display: flex;
      }
      .tip-box span {
        flex: 1;
        text-align: center;
      }
      .query span {
        font-size: 18px;
      }

      .input-wrap {
        position: relative;
      }
      .input-wrap span {
        position: absolute;
        right: 15px;
        bottom: 15px;
        font-size: 12px;
      }
      .input-wrap i {
        font-size: 20px;
        font-style: normal;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <!-- 条件选择框 -->
      <div class="query">
        <span>翻译成的语言:</span>
        <select v-model="obj.lang">
          <option value="italy">意大利</option>
          <option value="english">英语</option>
          <option value="german">德语</option>
        </select>
      </div>

      <!-- 翻译框 -->
      <div class="box">
        <div class="input-wrap">
          <textarea v-model="obj.words"></textarea>
          <span><i>⌨️</i>文档翻译</span>
        </div>
        <div class="output-wrap">
          <div class="transbox">{{ result }}</div>
        </div>
      </div>
    </div>
    <!-- <script src="./vue.js"></script> -->
     <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> 

     <!-- 引入axios.js库 发送HTTP请求 -->
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
      // 接口地址:https://applet-base-api-t.itheima.net/api/translate
      // 请求方式:get
      // 请求参数:
      // (1)words:需要被翻译的文本(必传)
      // (2)lang: 需要被翻译成的语言(可选)默认值-意大利
      // -----------------------------------------------
      
      const app = new Vue({
        el: '#app',
        data: {
           words: '',
          obj: {
            words: '苹果',
            lang:'italy'

          },
          result:'', //翻译结果
          // timer:null //延时器id(存它只是为了清除,与页面渲染无关,因此可以省略)
        },
        // 具体讲解:(1) watch语法 (2) 具体业务实现
        watch:{
          obj:{
            deep:true,//深度监视
            immediate:true,//立刻执行,一进入页面handler就立刻执行
            handler(newValue){
               clearTimeout(this.timer) //用于取消先前设置的定时器的方法。
           //存当前延时器 
           this.timer = setTimeout(async() => {
              const res = await axios({
                url:'https://applet-base-api-t.itheima.net/api/translate',
                params:newValue //params 选项用于传递查询参数
                  
              })
              this.result = res.data.data 
              console.log(res.data.data)
           },300)
            
         }
            }
          }

          //该方法会在数据变化时调用执行
          //newValue新值,oldValue旧值(一般不用)
          // words(newValue){
          //   console.log('变化了',newValue) 
          // }

          // 使用 async 和 await 来使异步代码更加简洁和易读。
          //'obj.words'(newValue){ //方法名不能直接出现特殊字符,出现要加引号
            // console.log('变化了',newValue)

            

            //防抖:延迟执行 -> 干啥事先等一等,延迟一会,一段时间内没有再次触发,才执行
            // 使用Axios发送一个GET请求到指定的API接口 
          //  clearTimeout(this.timer) //用于取消先前设置的定时器的方法。
          //  //存当前延时器 
          //  this.timer = setTimeout(async() => {
          //     const res = await axios({
          //       url:'https://applet-base-api-t.itheima.net/api/translate',
          //       params:{
          //         words:newValue
          //       }
          //     })
          //     this.result = res.data.data 
          //     console.log(res.data.data)
          //  },500)
            
         // }
        // }
      })
    </script>
  </body>
</html>

 

标签:box,vue,day,font,api,words,js,data,newValue
From: https://blog.csdn.net/m0_67307574/article/details/143957507

相关文章

  • Vue.js基础——贼简单易懂!!
     Vue.js是一个渐进式JavaScript框架,用于构建用户界面。它专门设计用于Web应用程序,并专注于视图层。Vue允许开发人员创建可重用的组件,并轻松管理状态和数据绑定。它还提供了一个虚拟DOM系统,用于高效地渲染和重新渲染组件。Vue以其简单易用的特点而闻名,使其成为初学者和有经验的......
  • 【云岚到家】-day08-3-系统优化-查询优化
    【云岚到家】-day08-3-系统优化-查询优化0本期代码仓库3订单查询优化3.1订单查询优化方案1)为什么要优化订单查询?2)确定优化方向3)订单详情优化方案4)用户端订单列表优化方案5)运营端订单列表优化方案3.2订单详情优化1)阅读状态机快照查询代码2)订单详情查询优化3)测试3.2......
  • 【若依】-day01-1-搭建及使用
    【若依】-day01-1-搭建及使用1若依搭建1.1若依版本1.2RuoYi-Vue1.3运行后端项目1.3.1初始化项目Git下载并进行Maven构建1.4构建数据库1.4.1配置mysql1.4.2配置redis配置信息1.5项目运行1.6运行前端项目1.6.1初始化项目1.6.2项目运行2入门案例2.1功能......
  • 2024/11/21日 日志 关于AJAX & Axious异步框架 & JSON
    AJAX点击查看代码--AJAX----AJAX--概念:AJAX(AsynchronousJavaScriptAndXML):异步的JavaScript和XML--AJAX作用:--1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据--使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JS......
  • 计算机毕业设计推荐】基于SpringBoot+Vue的甜品店管理系统的设计与实现 【附源码+数据
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 【计算机毕业设计选题推荐】基于springboot+vue的实践性教学系统的设计与实现 【附源
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 基于SprinBoot+vue的物业管理系统(源码+数据库+文档)
    物业管理系统基于SprinBoot+vue的物业管理系统一、前言二、系统设计三、系统功能设计 系统登录实现后台模块实现管理员模块实现物业管理模块实现业主模块实现维修员模块实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • day07(单片机高级)继电器模块绘制
    目录继电器模块绘制原理图布局添加板框布线按tab修改线宽度布线换层泪滴铺铜铺铜的作用铺铜的使用规范添加丝印步骤总结继电器模块绘制到淘宝找一个继电器模块继电器模块的使用(超详细)_继电器模块工作原理-CSDN博客文章浏览阅读4.8w次,点赞116次,收藏464......
  • day05(单片机高级)PCB基础
    目录 PCB基础什么是PCB?PCB的作用?PCB的制作过程PCB板的层数PCB设计软件安装立创EDA                                        PCB基础什么是PCB?PCB的作用?PCB(PrintedCircuitBoard),中文名称为印制电路板,又称印刷电路板......
  • 如何将json格式转换为dataframe格式
    介绍欢迎关注我的公众号《若木的解忧杂货铺》json格式JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于JavaScript语言的一个子集,但同时独立于任何编程语言。JSON格式易于人类阅读和编写,同时也易于机器解析和生成,这使得它成为理想的数据交换语言。JSON的基......