1.在components下建一个

2.代码如下:

<template>
<!--1.业务是开始有一组数据,序号,姓名,性别,年龄,操作(删除)
    2.有三个输入框输入姓名,性别,年龄,(增加)
    3.当输入东西后,按了增加按钮,将增加一组数据到数组中
    4.当按了删除就会删除一组数据
    主要业务如上
    细节:(重点)
    1.加样式让表格对齐等,像表格的感觉,表格如何设置宽高
    2.引入背景图片方式
    3.增加时验证是否有值输入在输入框
    4.v-model双向绑定,导致增加到数组的数据也会发生变化,引用传递和值传递区别,利用对象复制,开辟新空间来存储
    5.===会验证值和类型,==只能验证值
    6.splice使用注意
    7.css样式的使用
--> 
<div>
   
  <center>
    <div class="top">
      *姓名:<input type="text" v-model="datas.name" placeholder="请输入姓名" >
      *性别<input type="text" v-model="datas.sex" placeholder="请输入性别">
       *年龄<input type="text" v-model="datas.age" placeholder="请输入年龄">
        <button @click="pushUsers" style="color:blue">增加</button>
   
    <table class="top-left" >
         <!-- <img src="~@/assets/timg.jpg"> 这是引入图片 -->
      <br>
      <!--
        1.这里加了<thead>表头</thead> <tbody>表体</tbody>,则不对齐
        2.其实可以认为th就是表头,td就是表体
        3.想要表格变大,就是让每个单元格变大,
        tr标签只能改变的是高度,td和th只能改变宽度
      -->
      <tr>
        <th v-for="site in heads" :key="site" class="th1">{{site}}</th>
      </tr>
      <tr v-for="(user,index) in users" :key="user">
        <td class="td1">{{index+1}}</td>
       <td class="td1">{{user.name}}</td>
       <td class="td1">{{user.sex}}</td>
       <td class="td1">{{user.age}}</td>
       <td class="td1"><button @click="deleteUsers(index)" style="color:blue">删除</button></td>
      </tr>
    
  </table>
    </div>
  </center>
</div>
</template>
<script>
export default{
  data(){
    return {
      heads:['序号','姓名','性别','年龄','操作'],
      datas:{name:'',sex:'',age:''},
      users:[
        {name:'张三',sex:'男',age:'22'},
        {name:'李四',sex:'女',age:'24'},
        {name:'小何',sex:'男',age:'25'}
      ]
    }
    
  },
  
  methods:{
    pushUsers(){
      //这个要好好理解一下,这里目的是把datas对象复制,就是开辟个新空间。
      //为啥具体要这步骤呢,
      //1.当你不加的时候,当你增加了一个对象后,你改变输入框的值,数组中增加的对象的值也会跟着改变,因为数组和对象都是引用传递
      //这里引用传递,相当就是我们一直是给一个内存地址赋值,所以才会跟着联改。引用传递:保存的是引用值(还是一个地址),值传递保存的是一个数据
      //进行了一些表单验证
      if(this.datas.name.trim()===""){
          window.alert('请输入姓名');
          return false;
      }
      if(this.datas.sex.trim()===''){
        window.alert('请输入性别');
        return false;
      }
      if(this.datas.age.trim()===''){
        window.alert('请输入年龄');
        return false;
      }
      let copy =Object.assign({},this.datas) 
      this.users.push(copy);
      console.log("name:"+this.datas.name+",sex:"+this.datas.sex+",age:"+this.datas.age)
    },
    deleteUsers(index){
      console.log("index:"+index)
      this.users.splice(index,1);
      //splice(index,num,item1,item2,item3....) 新增/删除/替换
      //index,代表数组新增/删除时的索引值,num:删除多少个,item:代表新增哪些/替换掉删除的哪些
    },
  }
}
</script>
<style>
.top-left th,td{
  border:1px solid #ccc;
  margin: auto;
  text-align: center;
  
 
  /* 1px:代表边框的宽度 ,solid:代表实线,dotted(点状),double(双线),dashed(虚线)
      这里 th和td间要加一个,号
      margin:外边距,auto:浏览器自动计算  ,也可以自己设置值
  text-align:文本对齐方式,left 左对齐,right:右对齐,center:居中
  */
}
.top{
 
            position: absolute;
            width: 700px;
            height:400px;
            border: 1px solid red;
            left: 0px;
            top: 0px;
            bottom: 0px;
            right: 0px;
            margin: auto;
            font-size: 16px;
            color: blue;
            /* 引入背景图方式 */
            background: url('~@/assets/timg.jpg') center center no-repeat;
            background-size : 700px,200px;
        }
  .th1 {
      width: 80px;
  }
  .td1 {
      width: 80px;
  }
  
  tr{
    height: 80px;
  }
</style>

3..index.js下添加路由

4.效果如图:

vue小例子-01的更多相关文章

  1. Vue 小练习01

    有红, 黄, 蓝三个按钮, 以及一个200X200px的矩形box, 点击不同的按钮, box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang=&qu ...

  2. Vue编写的todolist小例子

    Vue编写的todolist小例子 本篇博客主要包含一个内容: 1.第一个内容:使用Vue编写todolist例子,包含的主要知识是v-model,v-for,el表达式,以及Vue中使用method ...

  3. Vue.js的小例子--随便写的

    1.领导安排明天给同事们科普下vue 2.简单写了两个小例子 3.话不多说直接上代码 <!DOCTYPE html> <html> <head> <meta ...

  4. 基于vue-cli、elementUI的Vue超简单入门小例子

    - 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. - 开始写例子之前,先对环境的部署做点简单的介绍,其实和Vue官方的差不多. #如若没有安装过vu ...

  5. JavaScript小例子:复选框全选

    JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...

  6. oracle数据库包package小例子

    为了把某一个模块的函数.存储过程等方便查询维护,可以把它们打到一个包里.下面给出一个简单的小例子. 1.创建包头 create or replace package chen_pack is func ...

  7. spring-mvc-两个个小例子

    1.用Eclipse创建一个工程,命名为spring2.0 并添加相应的jar包(我用的是4.0.5的版本)到 lib 包下: spring-webmvc-4.0.5.RELEASE.jar spri ...

  8. Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

    学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看 ...

  9. vuex2.0+两个小例子

    首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各核心概念的理解. 废话少说,直接上干货.这是官网上的一 ...

随机推荐

  1. 【Asp.net】 七大内置对象

    本文主要分析Asp.net的7大内置对象. 利用提供的内置对象可以实现页面之间的数据传递和一些特定的功能,如数据输出,页面重定向等.5个核心常用内置对象分别是Application,Session, ...

  2. 00 - PXE | 环境准备

    00 - PXE | 环境准备 TFTP PXE 1. TFTP服务搭建 安装环境Centos7.3 1.1 安装 # yum install xinetd # yum install tftp # ...

  3. Tomcat8.5安装与配置的坑

    本文只是单纯记录一下tomcat配置的坑! 1.下载官网:https://tomcat.apache.org/下载后解压到根目录,盘符任意.但必须有jdk,本人用的是jdk1.8 2.配置环境变量在c ...

  4. Lucene索引维护(添加、修改、删除)

    1. Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储            我们要根据数 ...

  5. jquery.datetimepicker中报错Cannot read property 'top' of undefined

    今天在项目里用到一个jQuery的时间插件,一开始自己写的测试demo完全么的问题 但当我把它放到项目里时问题来了,报了一个错:Cannot read property 'top' of undefi ...

  6. Nginx-3.控制nginx

    原文 nginx 通过信号来控制.对应linux系统就是用kill命令. The command kill sends the specified signal to the specified pr ...

  7. C#实例之简单聊天室(状态管理)

    前言        状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...

  8. 【daily】日常所遇 - 页面A嵌套页面B

    因为懒,所以直接在http://www.runoob.com写demo测试了. (1)iframe嵌套 虽然可能到现在这中方式都很常用,但是你baidu/google一下会发现.很多人都并不提倡用if ...

  9. WSL的ssh-agent问题

    WSL , 使用forwardAgent 的时候 , 用的以下两个应用 ubuntu 18.04 . ubuntu 这两个应用的 ssh-agent是有问题的 . 详见 https://github. ...

  10. Python循环引用的解决方案

    1.延迟导入:即将 from xxx import yyy 放到函数或类的内部,从而使其作用域变成局部的,但是这样可能会对性能有些影响: 2.将 from xxx import yyy 转换成 imp ...