文件链接:tmt-table.js

BOSS后台项目用到最多的就是列表页,所以把列表页做成通用组件,可以大大提高开发效率。

因为列表可能有不同的样式,所以在实例化组件时可以传值控制样式,用这种方式:

组件内部接收这个参数对象,判断使用哪套样式,如果不传参,则使用默认的'default'样式。

本组件有3个属性值,分别为:

  1. props: {
  2. //表格的基本参数和设置
  3. options: { required: true, default: {} },
  4. //返回当前点击行的所有原始数据
  5. rowdata: { required: false, default: {} },
  6. //当前的页数
  7. pagination: { required: false, default: 0 }
  8. },

组件的data属性有三个变量:

  1. data() {
  2. return {
  3. //分页总数
  4. pageNum: 0,
  5. //当前页数
  6. currentPage: 0,
  7. //样式加载结束才显示HTML页面,防止样式混乱
  8. isShow: false
  9. }
  10. },

当组件内部代码全部编译完成时,把依赖的bootstrap引入到页面中,并在css加载完毕后显示页面:

  1. ready() {
  2. var __this = this;
  3. //插入依赖的CSS文件
  4. var link = $('<link rel="stylesheet" type="text/css" href="http://h5cdn.wisdomtmt.com/common/util/tmt-table/tmt-table-theme/bootstrap.min.css"/>');
  5. $('head').append(link);
  6. //当CSS加载完成才显示组件
  7. var judgeCssLoad = setInterval(function() {
  8. if (link[0].sheet) {
  9. __this.isShow = true; clearInterval(judgeCssLoad);
  10. }
  11. }, 30)
  12.  
  13. //处理父组件传入的数据
  14. __this.loadData();
  15. }

组件内部定义了两个方法:

changePageloadData;

  1. changePage(currentPage) {
  2. //父组件和pagination是双向绑定,所以改变pagination的值,父组件可以接收到
  3. this.$set("pagination", currentPage);
  4. this.currentPage = currentPage;
  5. }
  1. loadData() {
  2. var __this = this;
  3. //判断外部的data数据是否传入,进行分页初始化和绑定事件
  4. var tableData = __this.options.data;
  5. //因为父组件传入的数据有延迟,所以设定200ms的延迟执行
  6. setTimeout(function() {
  7. //拿到父组件传入的数据才执行分页和绑定事件
  8. if (tableData) {
  9. //初始化分页
  10. __this.pageNum = Math.ceil(tableData.total_num / tableData.limit);
  11. //绑定事件,通过jQuery的on方法进行绑定
  12. if (__this.options.fn) {
  13. var fn = __this.options.fn,
  14. keys = Object.keys(fn);
  15. for (let i = 0; i < keys.length; i++) {
  16. var tempArr = keys[i].split(' ');
  17. //先解绑再绑定,防止重复绑定
  18. $(tempArr[0]).unbind();
  19. $(tempArr[0]).on(tempArr[1], function() {
  20. setTimeout(fn[keys[i]], 50);
  21. });
  22. }
  23. }
  24. } else {
  25. //如果没有拿到数据,就再执行一遍
  26. __this.loadData();
  27. }
  28. }, 200); }

组件的watch属性监听了两个变量:

optionspagination:

  1. watch: {
  2. //监听当options发生变化时,重载数据
  3. 'options': {
  4. handler: function(val, oldVal) {
  5. this.loadData();
  6. },
  7. deep: true
  8. },
  9. //当前页发生改变时,通知父组件
  10. 'pagination': {
  11. handler: function(val, oldVal) {
  12. this.currentPage = val;
  13. }
  14. }
  15. }

最后把tmtTable组件注册到Vue的全局变量上,并在控制台通知组件加载完毕:

  1. Vue.component('tmtTable', tmt_table);
  2. console.log('tmtTable component ready!');

tmtTable设计说明文档的更多相关文章

  1. PowerDesigner中导出设计说明文档

    点击下图的新建按钮,新建一个导出内容的模板 模板设计界面分为2栏,左边是可选的模板内容,右侧是模板,双击左侧条目会添加到右侧,最后生成的文件中就有此项内容. 已经添加到右侧的内容可以编辑,双击右侧的条 ...

  2. Net 通用权限管理系统源码 带数据库设计文档,部署说明文档

    Net 通用权限管理系统源码 带数据库设计文档,部署说明文档 包括数据库设计文档部署安装文档源码数据库文件 下载地址:http://www.mallhd.com/archives/1389

  3. SWFUpload 2.5.0版 官方说明文档 中文翻译版

    原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2 ...

  4. ICE中间件说明文档

    ICE中间件说明文档 1       ICE中间件简介 2       平台核心功能 2.1        接口描述语言(Slice) 2.2        ICE运行时 2.2.1         ...

  5. Eclipse用法和技巧四:生成说明文档1

    写代码经常要添加注释的,java代码的注释也可以分为两种.单行注释以“//”作为开头就可以.段落注释在第一行开头添加“/*”,在最后一行结尾添加“*/"即可.这里介绍一种添加注释的方法,其注 ...

  6. vnpy官网说明文档网址

    接触VNPY一年多,一直对作者设计原理和思想有所困惑.发一篇vnpy官网的说明文档,便于以后理解项目代码. http://www.vnpy.org/archives.html

  7. 为ASP.NET WEB API生成人性化说明文档

    一.为什么要生成说明文档 我们大家都知道,自己写的API要供他人调用,就需要用文字的方式将调用方法和注意事项等写成一个文档以更好的展示我们设计时的想法和思路,便于调用者更加高效的使用我们的API. 当 ...

  8. INSPIRED启示录 读书笔记 - 第18章 重新定义产品说明文档

    理想的产品说明文档 1.产品说明文档应该完整地描述用户体验——不只是用户需求,还包括交互设计和视觉设计.用户需求和用户体验是密不可分的 2.产品说明文档必须准确地描述软件的行为 3.产品说明文档必须以 ...

  9. ES SQL使用说明文档

    ES SQL使用说明文档 一.Elasticsearch术语介绍 l  接近实时(NRT): Elasticsearch 是一个接近实时的搜索平台.这意味着,从索引一个文档直到这个文档能够被搜索到有一 ...

随机推荐

  1. c#params ref out

    params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字. 示例: ...

  2. Quartz Java resuming a job excecutes it many times--转

    原文地址:http://stackoverflow.com/questions/1933676/quartz-java-resuming-a-job-excecutes-it-many-times Q ...

  3. Dagger2 生成代码学习

    接上一篇文章介绍了Dagger2的初步使用,相信刚接触的人会觉得很奇怪,怎么会有很多自己没有定义的代码出现,为什么Component的创建方式是那样的.为了搞清楚这些东西,我们需要查看一下Dagger ...

  4. vim黏贴自动增加tab的毛病

    vim在ctrl + p的时候有可能会自动给你增加了个tab 很是郁闷   解决方法如下: :set noautoindent :set nosmartindent

  5. java中的hashcode()和equals()

    equals()和hashcode()都继承自object类. equals() equals()方法在object类中定义如下: public boolean equals(Object obj) ...

  6. 【转】 CSS3实现10种Loading效果

    昨晚用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… PS:如需转载,请注明出处! 第1种效果: 代码如下: <div class="l ...

  7. js中的正则表达式使用

    function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. var receiveName = $(&qu ...

  8. 获取 Chromium 源代码以及环境配置

    一.获取代码 a) 不下载代码,直接浏览,到这里:http://src.chromium.org/viewvc/chrome/ 或者这里:http://code.google.com/p/chromi ...

  9. MVC之前的那点事儿系列

    MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园 ...

  10. Java程序,JDK的安装、环境的配置

    打开文件包,找到jdk-8u111-windows-x64  (64位)  双击打开安装界面 路径自行更改;(不可使用中文字段)新建一个文件夹放后面这个安装包 二.设置环境变量 右键我的电脑-属性-高 ...