GitHub提交

codePen:   https://codepen.io/chentianwei411/pen/wEVPZo

注意:频繁看案例,可能会被限制。

重点:

  1. 表单输入绑定, 单选按钮的使用。
  2. watch监听
  3. created及生命周期
  4. filters过滤器。

杂:

  1. String对象: indexOF()查找索引方法,replace()替换方法,slice(startIndex, endIndex)切割方法。
  2. <a>的target特性。<a href='/xxx' target="_blank">xxx</a> 在新的窗口打开document.


Grid component

本示例创建了一个可复用组件,可结合外部数据来使用它

MyCode Pen: https://codepen.io/chentianwei411/pen/pxoWLY

分析方法:

  1. 敲打一遍代码
  2. 在白纸上画草图,然后按照数据流动方向,分出不同的功能。
  3. 然后在按照功能逐步分析理解代码。
  4. 排序功能, 用到了sort(function(a, b) { return  1 | -1 | 0 })

知识点:

1. 类绑定

v-bind:class="{ 类名: 数据对象 | 函数}"

上面的语法表示: “类名”这个类是否有效,是根据冒号后面的数据或函数的返回值来确定的。true则生效。

绑定的数据对象可以不在内联定义在模版里:
<div v-bind:class="{ classObject }"></div>

data: { classObject: {  active: true, }}

还可以绑定一个返回对象的computed属性中的函数。
<div v-bind:class="{计算属性函数名}"></div>
这样就可以根据复杂的条件来进行选择是否添加这个类。常用并且强大的方法。

还可以使用三元表达式。


检索 + 过滤 功能

2. JavaScritp Array filter() Method

创建一个新array,内含所有通过测试函数的原array元素。

3. HTML中的特性名是大小写不敏感的。所以使用DOM中的模版时,驼峰的prop名需要使用等价的kebab-case命名。

4. Object的方法 ES5的方法,比较麻烦,已经可以用编辑的=方法。 有的方法仍有用。

Object.keys(person)  //得到person对象的可以修改的properties的name

var person = {firstName: "John",lastName : "Doe",language : "EN"
}Object.keys(person) //[firstName, lastName, language]

5 some()方法

检查一个数组中,是否有可以通过测试函数的元素。如果发现一个元素满足测试添加,就返回true。并停止检查剩下的元素。

小结:

data:  一个数组,内部是对象。

目标:根据某些条件得到数组中的部分元素(格式是对象)。

    data: [{ name: 'Chuck Norris', power: Infinity },{ name: 'Bruce Lee', power: 9000 },{ name: 'Jackie Chan', power: 7000 },{ name: 'Jet Li', power: 8000 }]
        data = data.filter(function (row) {return Object.keys(row).some(function (key) { return String(row[key]).toLowerCase().indexOf(filterKey) > -1 }) }) 

Array.filter(测试函数),   Object.keys(obj),   Array.some(测试函数)

data.filter(function(row) { ... })   //此处遍历data中每个元素对象。返回满足的元素,组成新的Array.

Object.keys(row)       //此处得到元素对象的key的数组集合

[...].some( function(key) { ... })   //此处判断数组集合是否有满足测试条件的元素,有则返回true。结束。


排序功能:

分析:

  1. 目标:根据columns中的列名来排序,columns= ["name", "power"]
  2. 因此:分解为按照name排序,和power排序两种。
  3. 使用sort()方法进行排序。sort()使用的是一种排序方法。这里是语法糖。

操作:

1. 在table表头增加一个click事件。绑定对应的column。

   <th v-for='key in columns' @click="sortBy(key)">

2. 增加data选项。问2个问题。

  • 用谁排序?  答:sortKey字符串, 用于存column的名字,
  • 排序的状态是什么? 答: sortOrders对象  用于储存所有columns的升序/降序排列状态,
    • 1代表ascend,
    • -1代表descend。
  data: function() {var sortOrders = {}this.columns.forEach(function(key){sortOrders[key] = 1})return {sortKey: '',sortOrders: sortOrders}},

3. 添加sortBy(key)方法,当用户点击table表头后,发生什么?

  • 把columns的name,传给sortKey数据, 告诉程序用户操作的列,
  • 改变sortOrders的值,告诉程序用另一种排序方式。 (1/-1切换)
  methods: {sortBy: function(key) {this.sortKey = keythis.sortOrders[key] = this.sortOrders[key] * -1}}

4. 初始化Vue实例中定义的data是动态响应数据。它们的变化会被监听。然后从新render对应DOM树。

 会再次渲染<tbody>中的<tr>。因此会调用计算属性中的方法filteredData()。

我们在filteredData方法中,把之前检索到的数据的按照升序/降序排列。然后返回排序后的数据。

  computed: {filteredData: function() {。。。之前检索数据data...略。。。var sortKey = this.sortKey        //根据哪个列来排序。var order = this.sortOrders[sortKey]   //order的值是1或-1。用它来决定最终的排序。if (sortKey) {data = data.sort(function(a, b) {a = a[sortKey]b = b[sortKey]return (a === b ? 0 : a > b ? 1 : -1) * order   //可以使用嵌套if语句。})}return data},},


CSS知识点:

1. user-select是什么

CSS特性, user-select: auto|none|text|all;

用户能否选中text。选中了可以复制/剪。如果使用none选项,则不能选中,也就不能复制。

2. 用纯css,画出一个箭头。

.arrow {
  display: inline-block;vertical-align: middle;width: 0;height: 0;margin-left: 5px;opacity: 0.66;
}.arrow.asc {border-left: 4px solid transparent;border-right: 4px solid transparent;border-bottom: 4px solid ;
}.arrow.dsc {border-left: 4px solid transparent;border-right: 4px solid transparent;border-top: 4px solid #fff;
}

转载于:https://www.cnblogs.com/chentianwei/p/9717279.html

Vue.js示例:GitHub提交(watch数据,created钩子,filters过滤); 网格组件(功能:1.检索,2排序);...相关推荐

  1. axios下载大文件_用Vue构建一个github“可视化大数据平台”

    GitDataV,是一个github"大数据可视化平台",通过它你可以更直观的看到你在github里的一些数据,(之所以打双引号,是因为我觉得这个还没到大数据可视化的程度).其实我 ...

  2. vue.js中mock本地json数据

    vue.js中mock本地json数据 新版本的vue项目中已经将dev-server.js,dev-client.js两个js文件合并到了webpack.dev.conf.js文件中,以下分别是新旧 ...

  3. 如何用Vue快速构建github可视化大数据平台

    一.项目简介 如何用Vue快速构建github可视化大数据平台 二.实现功能 个人信息 仓库语言分类 仓库公开数量 仓库stars情况 仓库数据 最近你的操作 粉丝数量 跟随数量 最近的跟随 最新信息 ...

  4. vue.js示例_一个示例项目,展示了集成Vue.js和Lumino的一种方法

    vue.js示例 Vue-lumino (vue-lumino) An example project showing one way to integrate Vue.js and Lumino ( ...

  5. vue.js实现一个会动的简历(包含底部导航功能,编辑功能)

    在网上看到一个这样的网站,STRML它的效果看着十分有趣,如下图所示: 这个网站是用react.js来写的,于是,我就想着用vue.js也来写一版,开始撸代码. 首先要分析打字的原理实现,假设我们定义 ...

  6. Vue.js 开发实践:实现精巧的无限加载与分页功能

    小编推荐:Fundebug专注于JavaScript.微信小程序.微信小游戏,Node.js和Java实时BUG监控.真的是一个很好用的bug监控费服务,众多大佬公司都在使用. 本篇文章是一篇Vue. ...

  7. vue form表单提交动态数据

    项目vue-cli搭建 需求为:vue页面跳转至第三方的支付页面 操作流程为:点击确认按钮时得到得到第三方网页的url和参数信息,以form表单的post方式提交 尝试了N种方法,都不可以成功完成逻辑 ...

  8. vue.js 每次循环五个数据_AutoML数据增广

    DeepAugment是一个专注于数据扩充的自动化工具. 它利用贝叶斯优化来发现针对您的图像数据集定制的数据增强策略. DeepAugment的主要优点和特点是: 降低CNN模型的错误率(WRN-28 ...

  9. vue 刷新echarts_在vue.js中使用echarts,数据动态刷新

    在vue使用echarts时,可能会遇到这样的问题,就是直接刷新浏览器,或者数据变化时,echarts不更新? 这是因为Echarts是数据驱动的,这意味着只要我们重新设置数据,那么图表就会随之重新渲 ...

最新文章

  1. c#.net连接access操作类(转)
  2. aspose.word在某个字后面自动换行_在Arctime里制作字幕如何自动换行?如何添加注释、广告语?...
  3. 【Python基础教程】for循环用法详解
  4. WordPress的默认循环
  5. 13.2.6 会话跟踪技术
  6. uva 10396——Vampire Numbers
  7. 哈夫曼树(Huffman Tree)的介绍、画法、哈夫曼树的可视化显示(Python代码实现)
  8. 资料员计算机知识大全,最新资料员专业基础知识
  9. ppt2003 未找到 mathpagewll 53_steam每日特惠:《伊拉图斯:死之主》今日史低53元
  10. Qt4_在Qt设计师中集成自定义窗口部件
  11. 4月份西部数码.wang域名注册量报告:增速严重缩水
  12. 计算机更新和网络有关系吗,路由器跟网速有关系吗 电脑的网速慢怎么调
  13. 玩转oracle视频教程(四)百度云
  14. QCC3020呼吸灯设计
  15. 信号处理中的预加重、去加重和均衡
  16. JSR303数据校验
  17. ajax传参的3种形式
  18. 计算机科学学院凤凰院徽,数学科学学院院徽、院训展示
  19. python if main_python if __name__ == 'main' 的作用和原理()
  20. Web开发技术的演变

热门文章

  1. gcc和g++的区别[zz]
  2. linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
  3. 基于空间金字塔池化的卷积神经网络物体检测
  4. 目标检测中背景建模方法
  5. 避免图像去雾算法中让天空部分出现过增强的一种简易方法
  6. Android Studio 打包、生成jks密钥、签名Apk、多渠道打包
  7. ELF文件格式与进程地址空间的联系
  8. 每瓶汽水一元,两个空瓶可以置换一瓶汽水,现有N元,最多能喝多少瓶?
  9. 关于IIS 7.0 局域网无法访问的解决方法 windows7 iis局域网不能访问
  10. VB 实现大文件的分割与恢复,引用 ADODB.Stream 提供一个过程代码