背景

为了学习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. 基于springmvc的hessian调用原理浅析

    一.客户端 1.构造(初始化) 由客户端的配置文件随容器的启动而进行初始化,配置文件如下: <?xml version="1.0" encoding="UTF-8& ...

  2. STL—内存的配置与释放

    上一篇我们介绍了STL对象的构造与析构,这篇介绍STL内存的配置与释放. STL有两级空间配置器,默认是使用第二级.第二级空间配置器会在某些情况下去调用第一级空间配置器.空间配置器都是在allocat ...

  3. HashTable的故事----Jdk源码解读

    HashTable的故事 很早之前,在讲HashMap的时候,我们就说过hash是散列,把...弄碎的意思.hashtable中的hash也是这个意思,而table呢,是指数据表格,也就是说hasht ...

  4. layui中使用autocomplete.js

    前言 在网站找了一大圈都是问题没有答案,记录记录谨防踩坑 layui版本:layui-v1.0.9_rls a(https://github.com/devbridge/jQuery-Autocomp ...

  5. WIN10下设置惠普HP1050等打印机打印颜色,只打黑白或彩色

    今天同事问了一个问题,如何在WIN10下,设置惠普打印机只打印黑白, 上网搜了下,没有找到任何信息,只有在WIN8前系统设置的内容,经过几番折腾,得出此文. WIN10下设置惠普HP1050等打印机打 ...

  6. win10下python2与python3以及pip共存

    一 分别安装python2和python3 注意: 安装时记得勾选 Add Python.exe to Path 二 安装pip Python3最新版本有pip,无需安装 Python2: 下载pip ...

  7. React-native初体验(安卓篇)

    本篇文章主要包括两方面,如何从0开始把RN(react-native)项目整合进入现有Android项目,以及我们做的第一个RN的上线项目遇到的一些坑. 初次做RN项目,我们选择做了一个逻辑相对简单的 ...

  8. 初次配置git与github出现push不了的问题

    ssh: connect to host gmail.com port 22: No route to host fatal: Could not read from remote repositor ...

  9. ES6函数扩展

    前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES ...

  10. 深入浅出数据结构C语言版(10)——树的简介

    到目前为止,我们一直在谈论的数据结构都是"线性结构",不论是普通链表.栈还是队列,其中的每个元素(除了第一个和最后一个)都只有一个前驱(排在前面的元素)和一个后继(排在后面的元素) ...