Vue指令之v-on

v-on指令用于注册事件,作用是添加监听与提供事件触发后对应的处理函数。

v-on有两种语法,在提供处理函数的时候既可以直接使用内联语句,也可以提供函数的名字。

第一种语法是直接提供内联语句,如下

v-on:事件名 = "内联语句"

Tips:注意v-on:的冒号后面不要加空格,加上之后会导致事件不响应。

举个例子,要实现两个加减按钮控制显示数字的增减,可以如下编写代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <div id="app">
        <!-- 按钮,v-on:后别加空格 -->
        <button v-on:click="number--">-</button>
        <!-- sapn是小盒子,一行可以多个(div是大盒子,一行只能有一个) -->
        <span>{{ number }}</span>
        <button v-on:click="number++">+</button>
    </div>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                number: 100,
            }
        })
    </script>
</body>
</html>

v-on:click表示监听点击事件,而等号后面则是出现了点击事件后要执行的语句。渲染后效果如下,可以点击按钮实现数字的增减。
在这里插入图片描述
click换成其他事件同样成立,比如鼠标进入事件mouseenter

同时,v-on:可以简写成@,如下,可以实现同样的功能。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <div id="app">
        <!-- 按钮 -->
        <button @mouseenter="number--">-</button>
        <!-- sapn是小盒子,一行可以多个(div是大盒子,一行只能有一个) -->
        <span>{{ number }}</span>
        <button @mouseenter="number++">+</button>
    </div>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                number: 100,
            }
        })
    </script>
</body>
</html>

显然,直接写内联语句适用于一些简单的功能,而复杂的功能则最好用函数来写,因此v-on的第二种语法就是传入函数名,改函数名应在实例化Vue实例的时候由methods属性提供。

v-on:事件名 = "methods中的函数名"

在下面的例子中,我们用一个按钮来控制文本的显示/隐藏,将该功能写在methods中的函数reverse中,使得控制该文本显示的变量翻转。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <div id="app">
        <!-- 传入函数名reverse -->
        <button @click="reverse">display/hide</button>
        <div v-show="isShown">ShadyPi</div>
    </div>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                isShown: true,
            },
            methods: {
                reverse () {
                    //注意这里要加app.或this.,否则找不到该变量
                    this.isShown = !this.isShown
                    console.log("click button")
                }
            }
        })
    </script>
</body>
</html>

点击按钮,即可控制文本显示隐藏,同时控制台输出调试信息。
在这里插入图片描述
自然地,这个函数也可以有参数传入,比如设置多个按钮,一个+3,一个+10.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <div id="app">
        <div>{{ number }}</div>
        <button @click="add(3)">+3</button>
        <button @click="add(10)">+10</button>
    </div>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                number: 100,
            },
            methods: {
                add (delta) {
                    this.number += delta
                }
            }
        })
    </script>
</body>
</html>

可以实现为数字加上不同的值得功能。
在这里插入图片描述

<think>好的,我现在需要帮助用户生成一个关于Vue和Ajax的思维导图,内容要涵盖Vue的介绍、入门程序、常用指令、Axios介绍、Axios入门、请求方式别名与案例、async/await以及Vue生命周期中的Axios案例。首先,我需要整理这些主题的结构,确保每个部分都有逻辑上的连贯性。 首先,用户提到了Vue的介绍,这里应该包括Vue的基本概念和核心特性,比如响应式数据、组件化等。然后入门程序部分需要展示如何快速创建一个Vue实例,可能包括HTML结构、引入Vue.js的步骤,以及简单的数据绑定示例。 接下来是常用指令,用户列举了v-for、v-bind、v-if、v-show、v-model和v-on。每个指令需要简要说明其用途和示例。例如,v-for用于循环渲染,v-bind绑定属性,v-if和v-show控制显示,v-model双向数据绑定,v-on处理事件。这部分需要结合引用中的代码示例,比如引用[3]和引用[4]中的v-for使用案例。 然后是Axios的介绍,需要说明它是一个基于Promise的HTTP客户端,适用于浏览器和Node.js,支持拦截请求和响应等特性。Axios入门部分应包括安装方法(npm或CDN)和基本配置,比如设置baseURL和headers。引用[2]提到了生命周期中的mounted钩子,这里可以结合在mounted中使用Axios发送请求的案例。 请求方式别名部分,需要列出GET、POST、PUT、DELETE等方法对应的Axios别名,例如axios.get()、axios.post()等,并给出示例代码。同时,可能需要提到如何处理参数,比如查询参数或请求体数据。 async/await的使用是为了简化异步操作,这里需要说明如何在Vue的方法中使用async函数来调用Axios,并处理响应数据。例如,在methods中定义一个async函数,内部使用await等待请求结果,然后更新Vue的数据。 最后,Vue生命周期中的Axios案例需要结合生命周期钩子,比如在created或mounted阶段发送请求获取数据。引用[1]中的示例展示了在mounted中发送请求,可以引用这个例子说明。同时,需要注意错误处理和加载状态的显示,提升用户体验。 在组织这些内容时,需要确保思维导图的层级清晰,主分支是Vue和Axios,子分支包括各自的介绍、具体用法和相关案例。可能需要将Vue和Axios作为两个主要部分,然后各自展开。同时,注意引用中的相关指令和生命周期钩子,确保信息准确。例如,引用[3]和[4]详细说明了v-for的使用,引用[2]提到了生命周期钩子,这些都需要正确引用。 另外,用户可能希望思维导图能帮助他们理解如何在Vue项目中整合Ajax请求,所以需要强调Axios在Vue中的典型应用,比如在生命周期钩子中获取数据,通过指令渲染数据。同时,可能需要提到async/await如何与Vue的方法结合,避免回调地狱,使代码更简洁。 最后,检查是否有遗漏的部分,比如自定义指令或其他高级用法,但根据用户提供的信息,主要关注点是在常用指令和Axios的基本使用上。确保每个部分都有对应的关键点,结构合理,便于用户制作思维导图时参考。</think>根据你的需求,我将按照以下结构帮你梳理思维导图框架(使用Markdown层级格式呈现): ``` # Vue与Ajax整合应用 ## 一、Vue核心概念 ### 1. Vue介绍 - 渐进式JavaScript框架[^3] - MVVM模式 - 响应式数据绑定 ### 2. 入门程序 ```html <div id="app">{{ message }}</div> <script src="vue.js"></script> <script> new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) </script> ``` ### 3. 常用指令 - v-for:列表渲染$$ <li v-for="(item,index) in items" :key="index">{{item}}</li> $$[^4] - v-bind:属性绑定$$ <img :src="imageSrc"> $$[^3] - v-if/v-show:条件渲染 - v-model:双向数据绑定$$ <input v-model="username"> $$[^3] - v-on:事件绑定$$ <button @click="submit">提交</button> $$[^2] ## 二、Axios网络请求 ### 1. Axios介绍 - 基于Promise的HTTP客户端 - 支持浏览器/Node.js环境 - 自动转换JSON数据 ### 2. 快速入门 ```javascript axios.get('/api/data') .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` ### 3. 请求方式 - GET:axios.get(url[, config]) - POST:axios.post(url, data[, config]) - PUT/DELETE等 ### 4. async/await用法 ```javascript methods: { async fetchData() { try { const res = await axios.get('/api/data'); this.items = res.data; } catch (error) { console.error(error); } } } ``` ## 三、生命周期整合 ### 1. 典型应用场景 - created:初始化非DOM相关数据 - mounted:DOM就绪后发起请求[^1] ```javascript mounted() { axios.get('/api/list') .then(res => this.items = res.data) } ``` ### 2. 最佳实践 - 结合Loading状态管理 - 错误统一处理 - 取消重复请求 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值