vue实现简单表格组件实例详解


Posted in Javascript onApril 16, 2017

本来想这一周做一个关于vuex的总结的,但是由于朋友反应说还不知道如何用vue去写一个组件,所以在此写写一篇文章来说明下如何去写vue页面或者组件。vue的核心思想就是组件,什么是组件呢?按照我的理解组件就是装配页面的零件,比如一辆车有大大小小许多零件组成,那么同样的一个页面,也是有许多组件构成的比如说头部组件 按钮组件等等,vue三大核心组件 路由 状态管理,路由控制页面的渲染,页面由组件组成,数据有vuex进行管理和改变。下面我会以一个简单的案例来说

第一步:构建一个简单的vue项目,老规矩直接在命令行输入

vue init webpack myproject
cd my vue
cnpm/npm install
cnpm/npm run dev

执行结果如下

vue实现简单表格组件实例详解

然后你会在8080端口看到vue的标志页面

第二步:分析目录结构 主要是组件入口app.vue和main.js

第三步:写页面

我们在app.vue下这样写

<template>
 <div id="wrapper">
 <router-view></router-view>
 </div>
</template>
<script>
 export default {
  data () {
  return {

  }
  },
  components: {
  }
 }
</script>

在main.js中这样写

import Vue from 'vue'
import App from './App'
import Home from './pages/Home.vue'
import VueRouter from 'vue-router'
import 'bootstrap/dist/css/bootstrap.css'
Vue.use(VueRouter)
const routes = [{
 path: '/',
 component: Home
}]
const router = new VueRouter({
 routes
})
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 template: '<App/>',
 components: { App }
})

main.js主要包括模块导入以及组件导入和注册,路由配置,当然路由配置可以单独写出来。

由上面的路由配置可以知道当path为‘/'时候,我们渲染到app.vue中的页面为home.vue页面,如下

<template>
 <div class="jumbotron">
 <h1>这个是路由对应的页面,下面就是一个表格组件</h1>
 <table-com/>
 </div>
</template>
<script>
 import table from '../components/Hello.vue'
 export default {
  data () {
  return {
  }
  },
  components: {
  tableCom: table
  }
 }
</script>

其中import table from '../components/Hello.vue'表示导入这个table组件到home.vue页面

但是只导入而没有注册这个组件是无效的,就好像定义了一个函数而没有执行。所以我们需要注册这个组件

也就是components:{tableCom: table}意思是自定义一个tableCom标签来映射这个组件,但是vue规定但标签名过长的时候,需要以分开方式去写比如tableCom 要写成table-com.

这样就完成了一个组件的导入和注册,下面我们来完成这个组件

table.vue界面如下

<template>
 <div style="padding:20px;" id="app">
  <div class="panel panel-primary">
   <div class="panel-heading">用户管理</div>
   <table class="table table-bordered table-striped text-center">
    <thead>
     <tr>
      <th>序号</th>
      <th>用户名</th>
      <th>年龄</th>
      <th>毕业学校</th>
      <th>操作</th>
     </tr>
    </thead>
    <tbody>
     <tr v-for ="(user,index) in users">
      <td>{{index+1}}</td>
      <td>{{user.name}}</td>
      <td>{{user.age}}</td>
      <td>{{user.school}}</td>
      <td><button v-on:click="remove(index)">remove</button></td>
     </tr>
     <tr>
      <td></td>
      <td><input type="text" id="name" v-model="user.name"/></td>
      <td><input type="text" id="age"v-model="user.age"/></td>
      <td><input type="text" id="school"v-model="user.school"/></td>
      <td><button @click="insert">insert</button></td>
     </tr>
    </tbody>
   </table>
  </div>
 </div>
</template>
<script>
export default {
 name: 'hello',
 data () {
 return {
  user: {'name': '', 'age': '', 'school': ''},
  users: [
  {'name': '李磊', 'age': '25', 'school': '洛阳理工'},
  {'name': '张成', 'age': '23', 'school': '桂林电子科技'},
  {'name': '炼心', 'age': '22', 'school': '江西电子科技'}
  ]
 }
 },
 methods: {
 insert: function () {
  this.users.push(this.user)
 },
 remove: function (index) {
  this.users.splice(index, 1)
 }
 }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
 font-weight: normal;
}
ul {
 list-style-type: none;
 padding: 0;
}
li {
 display: inline-block;
 margin: 0 10px;
}
a {
 color: #42b983;
}
tr,th{
 text-align:center;
}
</style>

这个组件实现了简单的增删功能,主要是对data数据的修改,我们要明白,我们平常使用的jquery只是对dom节点的操作,比如我们要改变一个数据我们就要首先获取dom然后通过jquery的方法来获取值,而vue则不然它是对data数据进行操作,数据双向绑定,数据改变则视图改变,同样视图改变则数据改变。

vue实现简单表格组件实例详解

以上所述是小编给大家介绍的vue实现简单表格组件实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
Aug 01 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
详解Vue中watch的高级用法
May 02 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
vue使用节流函数的踩坑实例指南
May 20 Vue.js
JavaScript实现网页头部进度条刷新
Apr 16 #Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 #Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 #Javascript
AngularJS双向绑定和依赖反转实例详解
Apr 15 #Javascript
JavaScript简单计算人的年龄示例
Apr 15 #Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 #Javascript
微信小程序动态的加载数据实例代码
Apr 14 #Javascript
You might like
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python中实现常量(Const)功能
2015/01/28 Python
Python进阶篇之字典操作总结
2016/11/16 Python
利用Python破解验证码实例详解
2016/12/08 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
小学教师的个人自我鉴定
2013/10/24 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
小学课外阅读总结
2014/07/09 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
尊师重教主题班会
2015/08/14 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python