背景

为了学习spring,准备写一个通讯录demo,实现增删改查功能。

前端页面同事推荐用vue.js,因为简单快速,当然前提是基于你对前端的html,css,js有一定的了解

资料

vue.js 官网: https://cn.vuejs.org/

axios: https://www.npmjs.com/package/axios

实例说明

整体思路

items用于页面展示,contact用于新增数据的存储,editContact用于修改数据的存储和展示

新建数据,页面form跟data绑定,存储在data中,axios获取data中的数据,向后端发起请求插入数据库,插入数据成功后,将前端form的数据存在items中用于页面展示;

修改数据,通过页面item.id通过axio向后端获取数据,展示在弹出窗口上,然后弹出窗口绑定了click时间触发后端editContact方法;

删除数据,页面数据通过直接获取item.id直接调用后端的删除接口,然后前端items也删除数据;

查询数据,直接接口

实例Vue,data来存储数据

var vm = new Vue({
el: '#contacts',
data: {
contact: {
id:'',
name: '',
wechat: '',
phone: '',
address: '',
industry: ''
},
editContact:{
id:'',
name: '',
wechat: '',
phone: '',
address: '',
industry: ''
},
items: []
}

数据绑定,将form表单里面的内容跟data中的contact双向绑定,页面填写的数据会保存在data.contact中,可以修改data.contact的数据来控制页面的数据展示

<form role="form" class="form-horizontal" id="contactForm">

    <label for="name">Name</label><input type="text" class="form-control" id="name" v-model="contact.name" />
<label for="wechat">Wechat</label><input type="text" class="form-control" id="wechat" v-model="contact.wechat" />
<label for="phone">Phone</label><input type="text" class="form-control" id="phone" v-model="contact.phone" />
<label for="address">Address</label><input type="text" class="form-control" id="address" v-model="contact.address" />
<label for="industry">Industry</label><input type="text" class="form-control" id="industry" v-model="contact.industry" /> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" v-on:click="insertContact" aria-hidden="true" data-dismiss="modal">保存</button>
</div>
</form>

v-for 遍历数据,列表展示数据,index为列表下标,遍历items里面的数据

<tr v-for="(item,index) in items">
<td>{{item.name}}</td>
<td>{{item.wechat}}</td>
<td>{{item.phone}}</td>
<td>{{item.address}}</td>
<td>{{item.industry}}</td>
<td>
<a class="btn btn-default" v-on:click="getEditContactId(item.id)" href="#modal-container-edit" data-toggle="modal">Edit</a>
<a class="btn btn-default" v-on:click="deleteContact(item.id,index)">Delete</a>
</td>
</tr>

mounted调用methods里面的方法,如mounted调用methods里面的getAllContact方法

mounted: function () {
this.getAllContact();
}

跟后端的交互请求,使用axios,如下get请求

getAllContact: function(){
axios.get('/contact/all')
.then(function (response) {
console.log(response.data);
vm.items=response.data
})
.catch(function (error) {
console.log(error)
});
}

methods里面方法的相互调用,edit完去调用getAllContact方法

 editContactInfo: function(){

                var editInfo = JSON.stringify(vm.editContact);

                var instance = axios.create({
timeout: 1000,
headers: { 'Content-Type': 'application/json' }
}); instance.post('/contact/edit/'+vm.editContact.id,editInfo)
.then(function (response){
console.log(response.data);
vm.getAllContact();
})
.catch(function (error){
console.log(error);
})
}

动作触发,v-on:click="方法名",点击edit触发getEditContactId方法

<a class="btn btn-default" v-on:click="getEditContactId(item.id)" href="#modal-container-edit" data-toggle="modal">Edit</a>
<a class="btn btn-default" v-on:click="deleteContact(item.id,index)">Delete</a>

Vue.js 入门的更多相关文章

  1. Vue.js 入门教程

    Vue.js 入门教程:https://cn.vuejs.org/v2/guide/index.html

  2. 免费的 Vue.js 入门与进阶视频教程

    这是我免费发布的高质量超清「Vue.js 入门与进阶视频教程」. 全网最好的.免费的 Vue.js 视频教程,课程基于 Vue.js 2.0,由浅入深,最后结合实际的项目进行了最棒的技术点讲解,此课程 ...

  3. Vue.js入门(一)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta htt ...

  4. Vue.js 入门:从零开始做一个极简 To-Do 应用

    Vue.js 入门:从零开始做一个极简 To-Do 应用 写作时间:2019-12-10版本信息:Vue.js 2.6.10官网文档:https://cn.vuejs.org/ 前言  学习 Vue ...

  5. Vue.js入门

    之前一直用的是jQuery,jQuery手动操作DOM导致性能不够好,因为DOM修改导致的页面重绘.重新排版!重新排版是用户阻塞的操作,同时,如果频繁重排,CPU使用率也会猛涨! Vue.js是数据驱 ...

  6. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...

  7. 一个Java程序猿眼中的前后端分离以及Vue.js入门

    松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ...

  8. vue.js 入门学习

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. [转]Vue.js 入门教程

    本文转自:http://www.runoob.com/w3cnote/vue-js-quickstart.html 什么是 Vue.js? Vue.js 是用于构建交互式的 Web  界面的库. Vu ...

  10. Vue.js入门系列(一)

    Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/78 ...

随机推荐

  1. 如何用快速傅里叶变换实现DFT

    [目标]   如何以 \(O(N \log N)\) 的效率将系数多项式转换为点值多项式. [前置技能]   众所周知,\(x^n=1\)的根有n个,而且它们分别是\(e^{\frac{2*π*i}{ ...

  2. 爬取拉勾部分求职信息+Bootstrap页面显示

    今天在用python实现爬虫的时候,就想看一下用c#实现同样的功能到底会多出来多少code,结果写着写着干脆把页面也简单的写一个出来,方便调试, 大致流程如下: 1.分析拉勾数据 2.查找拉勾做了哪些 ...

  3. JS内置对象学习总结

    日期对象: 创建日期对象: var date=new Date();//创建日期对象 设置/返回年份方法: date.getFullYear(); date.setFullYear(); 返回星期的方 ...

  4. github 项目管理

    一.在GitHub上创建项目 1. 打开浏览器 在地址栏输入地址:github.com 填写用户名.邮箱.密码 点击Sign up即可简单地注册 2. 完成注册,进入github平台, 点击new r ...

  5. 迭代器 Iterator

    迭代器 Iterator 2016-5-7 可以这样说,迭代器统一了对容器的访问方式. 考虑这样的情景:原本是对着List编码,但是后来发现需要把相同的代码用于Set.我们需要一种不关心容器类型 而能 ...

  6. anaconda 下多版本Python 安装说明

    网上针对多版本的Python兼容安装的文章逐渐增多,都是大家在实践中总结的经验.本人的安装经过几次的反复实验还是觉得其中一种更为方便. 有人的安装方法是: 1. 先安装一个版本的python(一般先安 ...

  7. JAVA入门[22]—thymeleaf

    一.thymeleaf官网 官网:https://www.thymeleaf.org/index.html doc:https://www.thymeleaf.org/documentation.ht ...

  8. (转)ZXing解析二维码

    1 ZXing解析二维码 上一篇文件已经说过如何用ZXing进行生成二维码和带图片的二维码,下面说下如何解析二维码 二维码的解析和生成类似,也可以参考google的一个操作类 BufferedImag ...

  9. HDOJ2002-计算球体面积

    Problem Description 根据输入的半径值,计算球的体积.   Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径.   Output 输出对应的球的体积,对于每组输 ...

  10. Java之IO流概述和File基本操作

    IO流图解 IO(in / out)流的分类 流向: 输入流  读取数据 输出流  写出数据 数据类型: 字节流 一个字节占8位, 以一个字节为单位读数据 八大数据类型所占字节数: byte(1), ...