目标

使用Vue+ElementUI+axios构建一个非常简单CRUD应用程序,以便您更好地了解它的工作方式。

什么是 axios?

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

安装axios

我们使用 NPM 进行安装

npm install axios

查询

setTodos() {
const url = "https://localhost:44399/api/todo?pageIndex=1&pageSize=100";
axios.get(url)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.Todos = response.data.Result;
}
});
},

新增

createTodo(item) {
const url = "https://localhost:44399/api/todo";
axios.post(url, item)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
this.addDialogVisible = false;
},

更新

updateTodo(item) {
const url = `https://localhost:44399/api/todo/${item.Id}`;
axios.put(url, item)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
this.editDialogVisible = false;
},

删除

deleteTodo(index) {
const url = `https://localhost:44399/api/todo/${this.Todos[index].Id}`;
axios.delete(url)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
},

完整代码:

<template>
<div style="text-align: left">
<el-button type="text" @click="addTodo()">新增</el-button>
<el-table :data="Todos" style="width: 100%">
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="Name" label="名称"> </el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="scope">
<el-button @click="editTodo(scope.$index)" type="text" size="small">编辑</el-button>
<el-button @click="deleteTodo(scope.$index)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<TodoAddWithUI :dialogVisible="addDialogVisible" :selectedItem="selectedItem" @save="createTodo" @cancel="cancel"></TodoAddWithUI>
<TodoEditWithUI :dialogVisible="editDialogVisible" :selectedItem="selectedItem" @save="updateTodo" @cancel="cancel"></TodoEditWithUI>
</div>
</template> <script>
import axios from "axios";
import TodoAddWithUI from "./TodoAddWithUI.vue";
import TodoEditWithUI from "./TodoEditWithUI.vue";
export default {
components: {
TodoAddWithUI,
TodoEditWithUI,
},
data() {
return {
selectedIndex: -1, // 选择了哪条记录
selectedItem: {}, // 选中的信息
addDialogVisible: false,
editDialogVisible: false,
Todos: [],
};
},
created: function () {
this.setTodos();
},
methods: {
setTodos() {
const url = "https://localhost:44399/api/todo?pageIndex=1&pageSize=100";
axios.get(url)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.Todos = response.data.Result;
}
});
},
addTodo() {
this.addDialogVisible = true;
},
createTodo(item) {
const url = "https://localhost:44399/api/todo";
axios.post(url, item)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
this.addDialogVisible = false;
},
editTodo(index) {
this.selectedIndex = index;
this.selectedItem = JSON.parse(JSON.stringify(this.Todos[index]));
this.editDialogVisible = true;
},
updateTodo(item) {
const url = `https://localhost:44399/api/todo/${item.Id}`;
axios.put(url, item)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
this.editDialogVisible = false;
},
deleteTodo(index) {
const url = `https://localhost:44399/api/todo/${this.Todos[index].Id}`;
axios.delete(url)
.then((response) => {
console.log(response);
if (response.data.Code === 0) {
this.setTodos();
}
});
this.selectedIndex = -1;
this.selectedItem = {};
},
cancel() {
this.addDialogVisible = false;
this.editDialogVisible = false;
},
},
};
</script>

TodoAddWithUI.vue和TodoEditWithUI.vue代码没有需要访问的Api,在这里就不贴了,其他代码:

小结

目前为止,我们完成了Vue+ElementUI+axios的CRUD,是不是还是挺简单的呀。其实你也可以使用Fetch API,Fetch API 是一个用于此类请求的强大的原生 API。你可能听说过 Fetch API 其中的一个好处,就是你不需要在使用它的时候额外加载一个外部资源。具体的用法跟axios基本上没有区别。

文中用到的代码我们放在:https://github.com/zcqiand/miscellaneous/tree/master/vue

一起学Vue:访问API(axios)的更多相关文章

  1. Vue.js Cookbook: 添加实例属性; 👍 axios(4万➕✨)访问API; filters过滤器;

    add instance properties //加上$,防止和已经定义的data,method, computed的名字重复,导致被覆写.//可以自定义添加其他符号. Vue.prototype. ...

  2. vue中比较完美请求的栗子(使用 axios 访问 API)

    vue中比较完美请求的栗子(使用 axios 访问 API) 官网地址:https://vuejs.bootcss.com/v2/cookbook/using-axios-to-consume-api ...

  3. vue全局使用axios插件请求ajax

    vue全局使用axios插件请求ajax Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方宣布停止更新vue-resource,并推 ...

  4. 一起学Vue之计算属性和侦听器

    概述 在Vue开发中,模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.当你想要在模板中多次引用相同表达式时,就会更加难以处理.所以,对于任何复 ...

  5. vue框架搭建--axios使用

    前后端数据交互作为项目最基础需求(静态的除外),同时也是项目中最重要的需求. 本文重点介绍axios如何配合vue搭建项目框架,而axios的详细使用介绍请移步使用说明 1.安装 cnpm insta ...

  6. 开发环境Vue访问后端接口教程(前后端分离开发,端口不同下跨域访问)

    原理:开发环境下的跨域:在node.js上实现请求转发,vue前端通过axios请求到node.js上,node.js将请求转发到后端,反之.响应也是,先到node.js上,然后转发vue-cil项目 ...

  7. 五、Vue:使用axios库进行get和post、用拦截器对请求和响应进行预处理、Mock(数据模拟)

    一.axios [应用]进行请求和传表单 [axios中文档]:https://www.kancloud.cn/yunye/axios/234845 [vue-axios]:https://cn.vu ...

  8. 【高德地图API】从零开始学高德JS API(六)——坐标转换

    原文:[高德地图API]从零开始学高德JS API(六)——坐标转换 摘要:如何从GPS转到谷歌?如何从百度转到高德?这些都是小case.我们还提供,如何将基站cell_id转换为GPS坐标? --- ...

  9. vue使用jsx/axios拦截器设置

    最害怕的就是做过的事情,转几天又忘记了:写过的代码,也模模糊糊不知道哪里去了,所以告诉自己最好把每天遇到的问题记录下来,好,开始. 新公司要搭个vue后台框架,所以用了简简单单的 vue+iview+ ...

随机推荐

  1. 1.UiPath账密安全保存常见方法

    今天在写流程的时候突然用到密码保存,看到同事不同项目中所用到的方法不同,就看了一下别的同学博客,总结的特别好,自己跟着实操了一遍,受益匪浅. RPA适合于登录不同的系统代替人工操作,而登录系统时难免要 ...

  2. 测试工具-XPath使用

    XML有两种MIME类型,即application/xml和text/xml,在HTTP中,MIME Type类型被定义在Content-Type header中.我们经常也会看到接口返回数据类型为X ...

  3. 使用implicitly demo

    泛型:  Context Bounds // //定义一个隐式值, 这个值不能少, 要不找不到比较的对象 implicit val personCompartor = new Ordering[Per ...

  4. 基于mockito做有效的单元测试

    概述 本文讲解的主要是有效和单元的思想,并不是说如何编写单元测试,用于改善和提高开发效率.编码风格.编码可读性和单测效率,不盲目追求覆盖率. 背景 现在很多单元测试只是利用@Test注解把代码或者整个 ...

  5. Spring学习(七)--Spring的AOP

    1.实现AOP的方式:通过proxy代理对象.拦截器字码翻译等. 2.AOP体系分层图,从高到低,从使用到实现: 基础:待增强或者目标对象 切面:对基础的增强应用 配置:把基础和切面结合起来,完成切面 ...

  6. Vue学习笔记使用系列一【表单】

    脚手架的搭建,请查看另外一篇日记:https://www.cnblogs.com/Fengge518/p/11837078.html 1:直接代码了 1 <!DOCTYPE html> 2 ...

  7. 中心极限定理(为什么y服从高斯分布)

    因为每一条数据都服从IID原则: 根据中心极限定理,当数据增加的时候,样本均值的分布慢慢变成正态分布 不管分布式什么分布,累加起来都是高斯分布 As sum increases, sum of non ...

  8. Prime Path(POJ - 3126)【BFS+筛素数】

    Prime Path(POJ - 3126) 题目链接 算法 BFS+筛素数打表 1.题目主要就是给定你两个四位数的质数a,b,让你计算从a变到b共最小需要多少步.要求每次只能变1位,并且变1位后仍然 ...

  9. OneWire总线的Arduino库函数

    OneWire总线基本点 One-wire总线是DALLAS公司研制开发的一种协议,采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的.它具有节省I/O 口线资源.结构简单.成本低廉.便于总线 ...

  10. CodeForces 79D 【Password】,洛谷P3943 【星空】

    其实我做的是洛谷的P3943,但是听说fstqwq窃题...... 题目描述: 小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点.不过,有 着强迫症的小 F 发现,这串一共 ...