开发者社区> 千往> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Vue.js 入门

简介: 背景 为了学习spring,准备写一个通讯录demo,实现增删改查功能。 前端页面同事推荐用vue.js,因为简单快速,当然前提是基于你对前端的html,css,js有一定的了解   资料   vue.
+关注继续查看

背景

为了学习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入门第一课
这个好像比ANGULAR.JS要轻量一些,看看。 DOCTYPE html> {{ message }} Greet Hi Yes! No! Age: {{ a...
912 0
Vue.js 生命周期
最近一直是在用Vue做项目 , 所以了解生命周期对于了解vue十分重要 : 官方给出对vue生命周期的解释 :
1113 0
Vue.js 极简教程
https://unpkg.com/vue@2.5.3/dist/vue.js 来,直接开始: 创建一个 .html 文件,然后通过如下方式引入 Vue: jsfiddle Hello World 例子: https://jsfiddle.
1250 0
+关注
千往
不想当开发的产品不是好测试
126
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载