位置: IT常识 - 正文

10-Ajax&Vue

编辑:rootadmin
Ajax&Vue 1、Ajax 1.1、概述 AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML 作用 1.与服务器进行数据交换:通过ajax可以给服务器发送请求,服务器将数据直接响应回给浏览器。 如图是没使用Ajax的时候,各个请求之间的 ... Ajax&Vue1、Ajax1.1、概述AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML作用

1.与服务器进行数据交换:通过ajax可以给服务器发送请求,服务器将数据直接响应回给浏览器。如图是没使用Ajax的时候,各个请求之间的流程Servlet调用完业务逻辑层后将数据存储到域对象中,然后跳转到指定的JSP页面,在页面上使用EL表达式和JSTL标签库进行数据的展示在学习Ajax后,就可以使用Ajax和服务器进行通信,以达到使用HTML+Ajax来替代JSP页面。在上图中,浏览器发送请求给Servlet,Servlet调用完业务逻辑层后将数据直接响应回给浏览器页面,页面使用HTML来进行数据展示2.进行异步交互:可以在不重新加载整个页面的情况下(局部刷新),与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等1.2、同步和异步的概念同步发送请求的过程如下所示浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他操作。只能等到服务器响应结束之后,浏览器页面才能继续其他操作异步发送请求的过程如下所示浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作1.3、Ajax入门1.3.1、客户端代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <input><br> <input type="button" value="点我,我在睡觉" onclick="sendAjax()"></body><script> function sendAjax() { //1.创建核心对象 xmlhttp=null; if (window.XMLHttpRequest) {// code for IE7, Firefox, Opera, etc. xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //2.明确发送的请求方式和请求路径 xmlhttp.open("get","/day28/ajaxServlet?username=tom") //3.发送请求 xmlhttp.send() //4.处理响应 xmlhttp.onreadystatechange=function () { //当响应完成的时候且响应正常完成的时候 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert(xmlhttp.responseText); } } } </script> </html>1.3.2、服务端代码package com.itheima.web.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(value = "/ajaxServlet")public class AjaxServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取发送过来的参数 String username = request.getParameter("username"); System.out.println(username); //生成响应 response.getWriter().print("ok~~~"); }}1.3.3、实现效果不难发现,点击按钮后,整个页面并没有发生跳转,只是进行了局部的刷新1.4、校验用户名是否存在案例(仅测试,不做过多的逻辑判断)1.4.1、需求在完成用户注册的时候,当用户名输入框失去焦点时,校验用户名是否在数据库中存在1.4.2、分析前端完成的逻辑

1.给用户名输入框绑定光标失去焦点事件onblur2.发送ajax请求,携带username参数3.处理响应:是否显示提示信息后端完成的逻辑

1.接收用户名2.调用service查询User3.返回标记1.4.3、整体流程图1.4.4、前端实现

推荐整理分享10-Ajax&Vue,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Step1:给用户名输入框绑定光标失去焦点事件

//1. 给用户名输入框绑定 失去焦点事件document.getElementById("username").onblur = function () {}

Step2:发送ajax请求,携带username参数

//2. 发送ajax请求//2.1. 创建核心对象var xhttp;if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest();} else { // code for IE6, IE5 xhttp = new ActiveXObject("Microsoft.XMLHTTP");}//2.2. 发送请求xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet);xhttp.send();//2.3. 获取响应xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { //处理响应的结果 }};

由于我们发送的是 GET 请求,所以需要在 URL 后拼接从输入框获取的用户名数据。而我们在 第一步 绑定的匿名函数中通过以下代码可以获取用户名数据

// 获取用户名的值var username = this.value; //this : 给谁绑定的事件,this就代表谁

而携带数据需要将 URL 修改为:

xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username="+username);

Step3:处理响应,根据响应判断是否显示提示信息

当 this.readyState == 4 && this.status == 200 条件满足时,说明已经成功响应数据了

此时需要判断响应的数据是否是 "true" 字符串,如果是说明用户名已经占用给出错误提示;如果不是说明用户名未被占用清除错误提示。代码如下

//判断if(this.responseText == "true"){ //用户名存在,显示提示信息 document.getElementById("username_err").style.display = '';}else { //用户名不存在 ,清楚提示信息 document.getElementById("username_err").style.display = 'none';}

完整JS代码

//1. 给用户名输入框绑定 失去焦点事件document.getElementById("username").onblur = function () { //2. 发送ajax请求 // 获取用户名的值 var username = this.value; //2.1. 创建核心对象 var xhttp; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } //2.2. 发送请求 xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username="+username); xhttp.send(); //2.3. 获取响应 xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { //alert(this.responseText); //判断 if(this.responseText == "true"){ //用户名存在,显示提示信息 document.getElementById("username_err").style.display = ''; }else { //用户名不存在 ,清楚提示信息 document.getElementById("username_err").style.display = 'none'; } } };}1.4.5、后端实现@WebServlet("/selectUserServlet")public class SelectUserServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1. 接收用户名 String username = request.getParameter("username"); //2. 调用service查询User对象,此处不进行业务逻辑处理,直接给 flag 赋值为 true,表明用户名占用 boolean flag = true; //3. 响应标记 response.getWriter().write("" + flag); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}1.4.6、实现效果2、Axios概念

Axios是对原生的Ajax进行封装,简化书写2.1、基本使用

1.引入axios的js文件

<script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/axios-0.18.0.js"></script>

2.使用axios发送ajax请求

发送get请求

axios({ method:"get", url:"http://localhost:8080/ajax-demo1/aJAXDemo1?username=zhangsan"}).then(function (resp){ alert(resp.data);});

发送post请求

axios({ method:"post", url:"http://localhost:8080/ajax-demo1/aJAXDemo1", data:"username=zhangsan"}).then(function (resp){ alert(resp.data);});

说明

axios()是用来发送异步请求的,小括号中使用js对象传递相关的参数

method属性:用来设置请求方式的。取值为get或者posturl属性:用来书写请求的资源路径。如果是get请求,需要将请求参数拼接到路径的后面,格式为:url?参数名1=参数值1&参数名2=参数值2data属性:作为请求体被发送的数据。也就是说如果是post请求的话。数据需要作为data属性的值then()需要传递一个匿名函数。then()中传递的匿名函数称为回调函数,意思是该匿名函数在发送请求的时候不会被调用,而是在成功响应后调用的函数。

resp属性是对响应的数据进行封装的对象,通过resp.data可以获取到响应的数据2.2、基本使用2.2.1、后端实现@WebServlet("/axiosServlet")public class AxiosServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("get..."); //1. 接收请求参数 String username = request.getParameter("username"); System.out.println(username); //2. 响应数据 response.getWriter().write("hello Axios~"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("post..."); this.doGet(request, response); }}2.2.2、前端实现10-Ajax&Vue

1.引入js文件

<script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/axios-0.18.0.js"></script>

2.发送ajax请求

get请求

axios({ method:"get", url:"http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"}).then(function (resp) { alert(resp.data);})

post请求

axios({ method:"post", url:"http://localhost:8080/ajax-demo/axiosServlet", data:"username=zhangsan"}).then(function (resp) { alert(resp.data);})

完整代码

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>axios-demo</title></head><body> <input type="button" value="发送get请求" id="btn1"> <input type="button" value="发送post请求" id="btn2"></body><!--导入axios.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/axios-0.18.0.js"></script><!--编写axios的代码--><script> document.getElementById("btn1").onclick = function () { // axios({ // method: "get", // url: "axiosServlet?username=tom" // }).then(function (response) { // // console.log(response); // // console.log(response.data); // window.alert(response); // window.alert(response.data); // }); // axios更简化的写法 axios.get("axiosServlet?username=tom").then(response => { console.log(response.data); }); } document.getElementById("btn2").onclick = function () { // axios({ // method: "post", // url: "axiosServlet", // data: "username=tom" // }).then(function (response) { // // console.log(response); // // console.log(response.data); // window.alert(response); // window.alert(response.data); // }); // axios更简化的写法 axios.post("axiosServlet", "username=tom").then(response => { console.log(response.data); }); }</script></html>2.2.3、实现效果2.3、Axios请求方法别名get 请求 : axios.get(url[,config])delete 请求 : axios.delete(url[,config])head 请求 : axios.head(url[,config])options 请求 : axios.option(url[,config])post 请求:axios.post(url[,data[,config])put 请求:axios.put(url[,data[,config])patch 请求:axios.patch(url[,data[,config])

PS:

axios会自动对JSON串进行转换发送异步请求时,如果请求参数是JSON格式,那请求方式必须是POST。因为JSON串需要放在请求体中2.4、使用Axios和JSON完成学生列表数据查询

虽然实现的效果差不多,但是实际上免去了JSTL中复杂的编写格式

2.4.1、前端实现<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>学生信息</title></head><body><hr><table id="studentTable" border="1" cellspacing="0" width="800" align="center"></table><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/axios-0.18.0.js"></script><!--<script>window.alert("等待页面加载.....");</script>--><script> // 在页面加载完成的时候,展示数据 console.log("等待页面加载....."); window.alert("等待页面加载....."); window.onload = function () { window.alert("页面加载成功,正在发送ajax请求!"); // 发送ajax的get请求,获取所有学生的信息 axios.get("selectAllStudentsServlet").then(response => { // console.log(response.data); // 定义表格中的首行信息 let startTr = "<tr>\n" + " <th>序号</th>\n" + " <th>学号</th>\n" + " <th>姓名</th>\n" + " <th>年龄</th>\n" + " <th>性别</th>\n" + " <th>语文成绩</th>\n" + " <th>数学成绩</th>\n" + " <th>英语成绩</th>\n" + " <th>操作</th>\n" + " </tr>"; // 定义表格中的末尾信息 let endTr = "<tr align=\"center\">\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td><input type=\"button\" value=\"新增学生信息\" onclick=\"location.href=('#')\"></td>\n" + " </tr>"; let middleTr = ""; // 遍历json数组,获取每个学生对象 // 获取返回的json数组 let arr = response.data; for (let i = 0; i < arr.length; i++) { // 将每个品牌封装成tr标签 middleTr += "<tr align=\"center\">\n" + " <td>" + (i + 1) + "</td>\n" + " <td>" + (arr[i].stuNumber) + "</td>\n" + " <td>" + (arr[i].name) + "</td>\n" + " <td>" + (arr[i].age) + "</td>\n" + " <td>" + (arr[i].sex) + "</td>\n" + " <td>" + (arr[i].chineseScore) + "</td>\n" + " <td>" + (arr[i].mathScore) + "</td>\n" + " <td>" + (arr[i].englishScore) + "</td>\n" + " <td>\n" + " <input type=\"button\" src=\"#\" value=\"修改\">\n" + " <input type=\"button\" src=\"#\" value=\"删除\">\n" + " </td>\n" + " </tr>"; } // 将所有的tr标签放入table标签终 document.getElementById("studentTable").innerHTML = startTr + middleTr + endTr; window.alert(document.getElementById("studentTable").innerHTML); }); }</script></body></html>2.4.2、后端实现package com.coolman.web.servlet;import com.alibaba.fastjson.JSON;import com.coolman.pojo.Student;import com.coolman.service.StudentService;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.List;@WebServlet("/selectAllStudentsServlet")public class SelectAllStudentsServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 在这里处理请求 // 调用服务,查询所有学生信息 List<Student> students = new StudentService().selectAllStudent(); // 将List对象转换成JSON格式的字符串 String str = JSON.toJSONString(students); // 处理中文乱码问题 // 方案1// response.setContentType("text/html;charset=utf-8"); // 方案2 response.setContentType("application/json;charset=utf-8"); // 返回字符串 response.getWriter().print(str); }}2.5、使用Axios和JSON完成新增学生信息2.5.1、前端实现<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>添加学生信息</title></head><body><h3 align="center">添加学生信息</h3><form> <div align="center"> <span>学号:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="stuNumber" id="stuNumber"> <br/> <span id="stuNumber_err_msg"></span> <br/> </span> <span>姓名:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="name" id="name"> <br> <span id="name_err_msg"></span> <br> </span> <span>年龄:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="age" id="age"> <br> <span id="age_err_msg"></span> <br> </span> <span>性别:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="sex" id="sex"> <br> <span id="sex_err_msg"></span> <br> </span> <span>语文成绩: <input name="chineseScore" id="chineseScore"> <br> <span id="chineseScore_err_msg"></span> <br> </span> <span>数学成绩: <input name="mathScore" id="mathScore"> <br> <span id="mathScore_err_msg"></span> <br> </span> <span>英语成绩: <input name="englishScore" id="englishScore"> <br> <span id="englishScore_err_msg"></span> <br> </span> <input id="commit" type="button" value="提交"> </div></form><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/axios-0.18.0.js"></script><script> // 定义一个对象,接收输入框中的信息 let studentFormData = { stuNumber: "", name: "", age: "", sex: "", chineseScore: "", mathScore: "", englishScore: "", } // 判断输入框是否为空 document.getElementById("stuNumber").onblur = function () { let stuNumber = this.value; if (stuNumber != "") { studentFormData.stuNumber = stuNumber; } else { document.getElementById("stuNumber_err_msg").innerText = "学号不能为空"; } }; document.getElementById("name").onblur = function () { let name = this.value; if (name != "") { studentFormData.name = name; } else { document.getElementById("name_err_msg").innerText = "姓名不能为空"; } }; document.getElementById("age").onblur = function () { let age = this.value; if (age != "") { studentFormData.age = age; } else { document.getElementById("age_err_msg").innerText = "年龄不能为空"; } }; document.getElementById("sex").onblur = function () { let sex = this.value; if (sex != "") { studentFormData.sex = sex; } else { document.getElementById("sex_err_msg").innerText = "性别不能为空"; } }; document.getElementById("chineseScore").onblur = function () { let chineseScore = this.value; if (chineseScore != "") { studentFormData.chineseScore = chineseScore; } else { document.getElementById("chineseScore_err_msg").innerText = "语文成绩不能为空"; } }; document.getElementById("mathScore").onblur = function () { let mathScore = this.value; if (mathScore != "") { studentFormData.mathScore = mathScore; } else { document.getElementById("mathScore_err_msg").innerText = "数学成绩不能为空"; } }; document.getElementById("englishScore").onblur = function () { let englishScore = this.value; if (englishScore != "") { studentFormData.englishScore = englishScore; } else { document.getElementById("englishScore_err_msg").innerText = "英语成绩不能为空"; } }; // 绑定提交事件 document.getElementById("commit").onclick = function () { // 判断对象是否存在数据 // 不存在则不发送添加学生信息的请求 if (studentFormData.name != "" && studentFormData.age != "" && studentFormData.sex != "" && studentFormData.stuNumber != "" && studentFormData.chineseScore != "" && studentFormData.mathScore != "" && studentFormData.englishScore != "" ) { // 发送ajax请求,添加学生数据 axios.post("addStudentServlet", studentFormData).then(response => { if (response.data == "ok") { location.href = "studentList.html"; } }); } else { window.alert("请补全信息!"); } }</script></body></html>2.5.2、后端实现package com.coolman.web.servlet;import com.alibaba.fastjson.JSON;import com.coolman.pojo.Student;import com.coolman.service.StudentService;import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/addStudentServlet")public class AddStudentServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 在这里处理请求 //1.获取请求体中的流 ServletInputStream is = request.getInputStream(); //2.把流转成java对象 Student student = JSON.parseObject(is, Student.class); //3.调用service中保存方法 new StudentService().addStudent(student); //4.通知前端保存成功 response.getWriter().print("ok"); }}3、Vue3.1、概念Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。其基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。MVC思想图解MVC:只能实现模型到视图的单向展示,无法实现双向绑定。双向绑定的概念指的是当数据模型的数据发生变化的时候,页面展示也会随之发生变化,而如果表单数据发生变化,绑定的模型数据也随之发生变化。MVVM思想图解图中的Model就是我们的数据,View是视图,也就是页面标签,用户可以通过浏览器看到的内容Model和View是通过ViewModel对象进行双向绑定的,而ViewModel对象是Vue提供的MVVM简单示例输入框绑定username模型数据,页面上使用{{}}绑定username模型数据通过浏览器打开该页面可以看到如下页面当我们在输入框中输入内容的同时,输入框后面也随之实时的展示我们输入的内容,这就是双向绑定的效果3.2、Vue入门

Vue使用起来比较简单,可以分为如下三步

1.新建HTML页面,引入Vue.js文件

<script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/vue.js"></script>

2.在js代码区域,创建Vue核心对象,进行数据绑定

new Vue({ el: "#app", data() { return { username: "" } }});

创建Vue对象的时候,需要传递一个js对象,而该对象中需要如下属性:

el:用来指定哪些标签受Vue管理,该属性取值#app中的app需要的是受管理的标签的id属性值data:用来定义数据模型methods:用来定义函数

3.编写视图

<div id="app"> <input name="username" v-model="username" > {{username}}</div>

{{}}是Vue中定义的插值表达式,在里面写数据模型,到时候会将该模型的数据值展示在这个位置

整体代码如下

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div id="app"> <input v-model="username"> <!--插值表达式--> {{username}}</div><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/p/js/vue.js"></script><script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ // data() 是 ECMAScript 6 版本的新的写法 return { username:"" } } /*data: function () { return { username:"" } }*/ });</script></body></html>3.3、Vue指令

指令:HTML标签上带有v-前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for....

常用的指令如下所示

指令作用v-bind为HTML标签绑定属性值,如设置href,css样式等等v-model在表单元素上创建双向数据绑定v-on为HTML标签绑定事件v-if条件性的渲染某元素,判定为true的时候渲染,否则不渲染v-else同if-elsev-else-if同if-else if-elsev-show根据条件展示某元素,区别在于切换的是display属性的值v-for列表渲染,遍历容器的元素或者对象的属性3.3.1、v-bind示例<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="app"> <!-- v-bind 该指令可以给标签原有属性绑定模型数据 v-bind 可以简化写成 : --> <a v-bind:href="https://www.cnblogs.com/OnlyOnYourself-lzw/p/url">点我一下</a><br/> <a :href="https://www.cnblogs.com/OnlyOnYourself-lzw/p/url">点我一下</a><br/> </div></body><!--导入vue.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/js/vue.js"></script><!--定义vue对象--><script> new Vue({ el: "#app", data: { url: "https://www.baidu.com" } })</script></html>通过浏览器打开该页面,可以发现,链接标签就绑定了data中的url数据模型3.3.2、v-model示例<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="app"> <a :href="https://www.cnblogs.com/OnlyOnYourself-lzw/p/url">点我一下</a><br/> <!-- v-model 指令可以给表单项标签绑定模型数据,这样就能实现双向绑定效果 --> <input v-model="https://www.cnblogs.com/OnlyOnYourself-lzw/p/url"/> </div></body><!--导入vue.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/js/vue.js"></script><!--定义vue对象--><script> new Vue({ el:"#app", data:{ url:"https://www.bing.com" } });</script></html>通过浏览器打开该页面,发现a标签的href属性会随着输入框输入的路径变化而变化,这是因为超链接和输入框绑定的是同一个数据模型3.3.3、v-on示例<!DOCTYPE html><html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="app"> <!-- v-on 指令用于绑定事件,具体方法逻辑需要在vue的methods属性中体现 v-on 可以简写为 @ --> <input type="button" value="点我44" v-on:click="show1()"/> <input type="button" value="点我44" v-on:click="show2"/> <input type="button" value="点我44" @click="show3()"/> </div></body><!--导入vue.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/js/vue.js"></script><!--定义vue对象--><script> new Vue({ el:"#app", data:{ }, methods: { show1() { alert("我被点了,嘤嘤嘤"); }, show2() { alert("我又被点了,嘤嘤嘤"); }, show3() { alert("我又又被点了,嘤嘤嘤"); } } });</script></html>v-on:后面的事件名称是之前原生事件属性名去掉on例如单击事件:事件属性名是onclick,而在vue中使用的是:v-on:onclick失去焦点事件:事件属性名是onblur,而在vue中使用的是:v-on:blur3.3.4、v-if示例<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="app"> <!-- 语法: v-if="布尔表达式" v-else-if="布尔表达式" v-else 注意: 当得到结果为true时,所在的元素才会被渲染 v-else-if或v-else元素必须跟在v-if的元素的后面,否则它将不会被识别 --> <!--从文本框输入成绩, 然后判断成绩是否及格 >=60:及格 <60:不及格 其他数字:超出范围 非数字:数据非法--> <h3>考试成绩练习</h3> 请输入成绩:<input type="text" v-model="score"><br> 你本次考试成绩: <div v-if="score == ''"></div> <div v-else-if="score > 100 || score < 0">超出范围</div> <div v-else-if="score >= 60">及格</div> <div v-else-if="score < 60">不及格</div> <div v-else>数据非法</div> <hr> <div v-show="score==100">满分</div> </div></body><!--导入vue.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/js/vue.js"></script><!--定义vue对象--><script> new Vue({ el:"#app", data:{ score:"", }, });</script></html>3.3.5、v-for示例<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <div id="app"> <!-- 语法: <标签 v-for="(变量名,索引) in 集合模型数据"> {{变量名}} </标签> 注意: 遍历那个标签就把v-for写在那个标签中 不需要索引时可以不写,这时候小括号也可以省略 --> <ul> <li v-for="city in cities">{{city}}</li> </ul> <hr/> <ul> <li v-for="(city, index) in cities"> {{index + 1}} : {{city}} </li> </ul> </div></body><!--导入vue.js--><script src="https://www.cnblogs.com/OnlyOnYourself-lzw/js/vue.js"></script><!--定义vue对象--><script> new Vue({ el:"#app", data:{ cities:["北京", "上海", "广州", "深圳"] } });</script></html>3.3.6、生命周期

本文链接地址:https://www.jiuchutong.com/zhishi/304120.html 转载请保留说明!

上一篇:安装帝国cms如何配置iis(帝国cms使用手册)

下一篇:ps动不了也关不了(打开的ps关不掉)

  • 湖南省居民健康卡怎么修改手机号(湖南省居民健康卡挂号后怎么查询)

    湖南省居民健康卡怎么修改手机号(湖南省居民健康卡挂号后怎么查询)

  • 手机微信怎么充公交卡(手机微信怎么充不了话费)

    手机微信怎么充公交卡(手机微信怎么充不了话费)

  • 爱奇艺里的骑士卡有什么用(嗯爱奇艺的)

    爱奇艺里的骑士卡有什么用(嗯爱奇艺的)

  • 光猫信号灯亮红色(光猫信号灯亮红灯但是电源是黄灯)

    光猫信号灯亮红色(光猫信号灯亮红灯但是电源是黄灯)

  • 学习通视频怎么下载

    学习通视频怎么下载

  • 闲鱼交易款冻结怎么解除(闲鱼交易款冻结怎么办)

    闲鱼交易款冻结怎么解除(闲鱼交易款冻结怎么办)

  • vivo手机GPS信号弱怎么解决(vivo手机gps信号弱怎么解决)

    vivo手机GPS信号弱怎么解决(vivo手机gps信号弱怎么解决)

  • 华硕键盘字母变成数字怎么办(华硕键盘打字母变成数字)

    华硕键盘字母变成数字怎么办(华硕键盘打字母变成数字)

  • b站充电up主能得到多少(b站充电up主能得多少金币)

    b站充电up主能得到多少(b站充电up主能得多少金币)

  • 情侣空间签到提醒在哪打开(情侣空间签到提醒在哪关闭)

    情侣空间签到提醒在哪打开(情侣空间签到提醒在哪关闭)

  • 抖音和西瓜视频啥关系(抖音和西瓜视频绑定好不好)

    抖音和西瓜视频啥关系(抖音和西瓜视频绑定好不好)

  • 手机用了两年,现在太卡了怎么办(手机用了两年发烫是什么原因)

    手机用了两年,现在太卡了怎么办(手机用了两年发烫是什么原因)

  • 水星路由器的管理员密码是什么(水星路由器的管理密码)

    水星路由器的管理员密码是什么(水星路由器的管理密码)

  • mac地址长度

    mac地址长度

  • 小米9自动关机怎么回事(小米9自动关机怎么设置)

    小米9自动关机怎么回事(小米9自动关机怎么设置)

  • 美图秀秀有修图记录吗(美图秀秀修图后清晰度不高了)

    美图秀秀有修图记录吗(美图秀秀修图后清晰度不高了)

  • 二分搜索法是利用什么实现的算法(二分搜索算法是基于什么设计的算法)

    二分搜索法是利用什么实现的算法(二分搜索算法是基于什么设计的算法)

  • 头条私聊能发图片吗(头条私聊怎么发图片)

    头条私聊能发图片吗(头条私聊怎么发图片)

  • 微信怎么发超过25m的图片(微信怎么发超过30秒的视频朋友圈)

    微信怎么发超过25m的图片(微信怎么发超过30秒的视频朋友圈)

  • oppo手机通话声音小怎么办(oppo手机通话声音小怎么调大)

    oppo手机通话声音小怎么办(oppo手机通话声音小怎么调大)

  • wps怎么快速删除多行(wps怎么快速删除很多页)

    wps怎么快速删除多行(wps怎么快速删除很多页)

  • 淘宝直播间助力值怎么涨(淘宝直播间助力值)

    淘宝直播间助力值怎么涨(淘宝直播间助力值)

  • 苹果xs max面部识别不了(苹果xs max面部识别)

    苹果xs max面部识别不了(苹果xs max面部识别)

  • 微信金山文档怎么在电脑上打开(微信金山文档怎么保存到电脑桌面上)

    微信金山文档怎么在电脑上打开(微信金山文档怎么保存到电脑桌面上)

  • 怎么查手机什么时候激活的(怎么查手机什么时候开机的)

    怎么查手机什么时候激活的(怎么查手机什么时候开机的)

  • 街兔电单车怎么骑(街兔电单车怎么成了青桔)

    街兔电单车怎么骑(街兔电单车怎么成了青桔)

  • 2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查)

    2、springboot+mybatis+ajax+pageHelper+idea+maven(全套增删改查)

  • 标书费没有发票收据可以入帐吗
  • 纳税收入包含哪些
  • 个税扣除项生效日期
  • 车购税申报表如何作废重开
  • 代销手续费如何开票
  • 原材料当废品卖怎么处理
  • 城市建设综合配套费征收管理办法
  • 海关进口增值税专用缴款书图片
  • 员工年终福利发什么
  • 商品房买卖合同预售和商品房买卖合同有什么区别
  • 发票专用章只能盖一个
  • 免税农产品的范围有哪些
  • 金税盘使用说明
  • 以前年度城建税减免可以计去营业外收入嘛
  • 特殊性税务处理弥补亏损限额
  • 工程建造过程中发生的在建工程人员工资180万尚未支付
  • 六税两费包括哪三税
  • 餐饮业管理费用明细表
  • 税控专用设备全称是什么
  • win7操作系统激活
  • win11和win10比较
  • 移动网速测试软件
  • 为什么申报个人所得税还要补税
  • 两处发工资,如何合并
  • 计提待摊费用怎么记账
  • php for in
  • 分红个人所得税在哪里查询
  • 退回多收款项开具发票原发票需要退回吗
  • php面向对象优点,缺点
  • 跨年冲减无发票怎么入账
  • 银行复利息合法吗?
  • 营改增后土地增值税
  • Netlib.exe - Netlib是什么进程 有什么用
  • 蓝莓外面的霜
  • 雷尼尔国家公园攻略
  • 哪个光圈值最大
  • 管理费用属于损益类吗
  • 资产负债表中其他应付款根据什么填列
  • 买花木计入什么科目
  • 不构成业务的反义词
  • 应收账款质押融资平台
  • 税控系统维护费普通发票可以全额抵扣吗
  • percona-toolkit对MySQL的复制和监控类操作教程
  • 代收往来款的会计分录
  • 企业净利率多少算高
  • 小规模企业主营业务成本分录
  • 合同资产和合同履约成本的区别
  • 社保局退的工伤保险怎么记账
  • 工商年报纳税总额包括个人所得税吗
  • 存货跌价准备什么科目
  • 人力资源外包服务企业
  • 出口企业样品收入分录
  • 商业承兑汇票怎么接收
  • 免税出口是什么意思
  • 个税速算扣除数2023
  • 应付账款可以用现金支付吗
  • 附加税期末余额在借方
  • 资产负债表固定资产怎么填
  • 利息支出和利息收入区别
  • 分公司给总公司分红怎么入账
  • 销售毛利率越高越好吗
  • 在sql中执行一个创建数据表的脚本文件
  • windows7怎么说
  • 安装了windows
  • 中文版windows7的安装方式
  • xp系统无线网络连接怎么没有
  • windows7system登录
  • mac系统怎么设置默认应用
  • pax是什么文件
  • mfc界面布局
  • cocos2d-x教程
  • react-navigation 如何判断用户是否登录跳转到登录页的方法
  • jquery 滑块
  • js弹出小窗口
  • jquery onready
  • Node.js中的全局对象有
  • nodejs发送图片给前端
  • 常用的截图方法有哪些
  • 河北税务局是干嘛的
  • 冷库出租需要交什么税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设