其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选

小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的,js是小颖自己写哒,欢迎大家吐槽和点赞,嘻嘻

慕课网demo的  git 地址:ShoppingCart

页面效果:

具体怎么实现的呢?

因为上篇文章:使用localstorage来存储页面信息 中已经有写项目是怎么创建的所以小颖在这里就不重复了,其实只是在上篇文章的基础上稍微做了改动:

App.vue文件

  1. <template>
  2. <div id="app">
  3. <router-view/>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'app'
  9. }
  10.  
  11. </script>
  12. <style>
  13. #app {
  14. font-family: 'Avenir', Helvetica, Arial, sans-serif;
  15. -webkit-font-smoothing: antialiased;
  16. -moz-osx-font-smoothing: grayscale;
  17. color: #2c3e50;
  18. }
  19.  
  20. li,
  21. dl,
  22. dt,
  23. dd,
  24. h1,
  25. h2,
  26. h3,
  27. h4,
  28. h5,
  29. h6,
  30. hgroup,
  31. p,
  32. blockquote,
  33. figure,
  34. form,
  35. fieldset,
  36. input,
  37. legend,
  38. pre,
  39. abbr,
  40. button {
  41. margin: 0;
  42. padding: 0;
  43. }
  44.  
  45. ul,
  46. ol {
  47. list-style: none;
  48. margin: 0;
  49. padding: 0;
  50. }
  51.  
  52. *,
  53. *::before,
  54. *::after {
  55. box-sizing: border-box;
  56. }
  57.  
  58. div,
  59. p,
  60. dl,
  61. dt,
  62. dd {
  63. margin: 0;
  64. padding: 0;
  65. }
  66.  
  67. a {
  68. color: inherit;
  69. text-decoration: none;
  70. }
  71.  
  72. .checkout-title {
  73. position: relative;
  74. margin-bottom: 41px;
  75. text-align: center;
  76. }
  77.  
  78. .checkout-title::before {
  79. position: absolute;
  80. top: 50%;
  81. left: 0;
  82. content: "";
  83. width: 100%;
  84. height: 1px;
  85. background: #ccc;
  86. z-index: 0;
  87. }
  88.  
  89. .checkout-title span {
  90. position: relative;
  91. padding: 0 1em;
  92. background-color: #fff;
  93. font-family: "moderat", sans-serif;
  94. font-weight: bold;
  95. font-size: 20px;
  96. color: #605F5F;
  97. z-index: 1;
  98. }
  99. </style>

home.vue文件

  1. <template>
  2. <div class="container">
  3. <div class="checkout-title">
  4. <span>购物车</span>
  5. </div>
  6. <table class="product_table">
  7. <tbody>
  8. <template v-for="(list,index) in table_list">
  9. <tr>
  10. <td width="7%" min-width="94px" v-if="index===0">
  11. <input type="checkbox" v-model='checked' v-on:click='checkedAll'></td>
  12. <td width="7%" v-if="index!==0">
  13. <input type="checkbox" v-model='checkList' :value="list.id">
  14. </td>
  15. <td width="43%">{{list.product_inf}}</td>
  16. <td width="10%" v-if="index===0">{{list.product_price}}</td>
  17. <td width="10%" v-if="index!==0">&yen;{{list.product_price}}</td>
  18. <td width="10%">{{list.product_quantity}}</td>
  19. <td width="10%">{{list.total_amount}}</td>
  20. <td width="20%" v-if="index===0">编辑</td>
  21. <td width="20%" v-if="index!==0">
  22. <a href="#" class="update">修改</a>
  23. <a href="#" class="delete">删除</a>
  24. </td>
  25. </tr>
  26. </template>
  27. </tbody>
  28. </table>
  29. <div class="price_total_bottom">
  30. <div class="price_total_ms">
  31. <label>合计:{{allProductTotal}}</label>
  32. <router-link to="/userAddress">结账</router-link>
  33. </div>
  34. </div>
  35. </div>
  36. </template>
  37. <script>
  38. import userAddress from './address'
  39. export default {
  40. components: {
  41. userAddress
  42. },
  43. data() {
  44. return {
  45. table_list: [{
  46. 'id': 0,
  47. 'product_inf': '商品信息',
  48. 'product_price': '商品金额',
  49. 'product_quantity': '商品数量',
  50. 'total_amount': '总金额'
  51. }, {
  52. 'id': '1',
  53. 'product_inf': '女士银手链',
  54. 'product_price': 120,
  55. 'product_quantity': 200,
  56. 'total_amount': 24000
  57. }, {
  58. 'id': '2',
  59. 'product_inf': '女士银手镯',
  60. 'product_price': 380,
  61. 'product_quantity': 200,
  62. 'total_amount': 72000
  63. }, {
  64. 'id': '3',
  65. 'product_inf': '女士银耳环',
  66. 'product_price': 100,
  67. 'product_quantity': 200,
  68. 'total_amount': 20000
  69. }],
  70. checked: false,
  71. allProductTotal: null,
  72. checkList: ['1', '3']
  73. }
  74. },
  75. methods: {
  76. checkedAll: function() {
  77. var _this = this;
  78. console.log(_this.checkList);
  79. if (_this.checked) { //实现反选
  80. _this.checkList = [];
  81. } else { //实现全选
  82. _this.checkList = [];
  83. _this.table_list.forEach(function(item, index) {
  84. if (index > 0) {
  85. _this.checkList.push(item.id);
  86. }
  87. });
  88. }
  89. }
  90. },
  91. watch: { //深度 watcher
  92. 'checkList': {
  93. handler: function(val, oldVal) {
  94. if (val.length === this.table_list.length - 1) {
  95. this.checked = true;
  96. } else {
  97. this.checked = false;
  98. }
  99. },
  100. deep: true
  101. }
  102. }
  103. }
  104.  
  105. </script>
  106. <!-- Add "scoped" attribute to limit CSS to this component only -->
  107. <style scoped>
  108. .container {
  109. padding: 69px 0 54px 0;
  110. }
  111.  
  112. table {
  113. border-collapse: collapse;
  114. border-color: transparent;
  115. text-align: center;
  116. }
  117.  
  118. .product_table,
  119. .product_table tbody {
  120. width: 100%
  121. }
  122.  
  123. .product_table tr:first-child {
  124. background: #ece6e6;
  125. color: #e66280;
  126. font-size: 20px;
  127. }
  128.  
  129. .product_table td {
  130. border: 1px solid #f3e8e8;
  131. height: 62px;
  132. line-height: 62px;
  133. }
  134.  
  135. .product_table a.update:link,
  136. .product_table a.update:visited,
  137. .product_table a.update:hover,
  138. .product_table a.update:active {
  139. color: #1CE24A;
  140. }
  141.  
  142. .product_table a.delete:link,
  143. .product_table a.delete:visited,
  144. .product_table a.delete:hover,
  145. .product_table a.delete:active {
  146. color: #ffa700;
  147. }
  148.  
  149. .price_total_bottom {
  150. font-size: 20px;
  151. padding: 20px 10px;
  152. }
  153.  
  154. .price_total_ms {
  155. text-align: right;
  156. }
  157.  
  158. .price_total_bottom .price_total_ms label {
  159. margin-right: 100px;
  160. }
  161.  
  162. .price_total_bottom .price_total_ms a {
  163. cursor: default;
  164. text-align: center;
  165. display: inline-block;
  166. font-size: 20px;
  167. color: #fff;
  168. font-weight: bold;
  169. width: 220px;
  170. height: 54px;
  171. line-height: 54px;
  172. border: 0;
  173. background-color: #f71455;
  174. }
  175.  
  176. </style>

vue2.0在table中实现全选和反选的更多相关文章

  1. vue2.0实现在table中实现全选和反选

    其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的, ...

  2. 原生js中实现全选和反选功能

    <!DOCTYPE html>      <html>      <head lang="en">          <meta char ...

  3. jquery中的全选、反选、全不选和单删、批删

    HTML页面 <!doctype html><html lang="en"><head> <meta charset="UTF- ...

  4. vue中的checkbox全选和反选

    前几天有个博客园的朋友问小颖,小颖之前写的vue2.0在table中实现全选和反选  .Vue.js实现checkbox的全选和反选,为什么他将里面的js复制下来,但是实现不了全选和反选.小颖当时看他 ...

  5. Android中购物车的全选、反选、问题和计算价格

    此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //- ...

  6. 【jquery】一个简单的单选、多选、全选、反选、删除的小功能

    对表格内容进行单行删除.单行选中.多行选中.全选.反选.删除选中行等操作 HTML代码 <table class="table table-bordered border-shadow ...

  7. 实现table中checkbox复选框、以及判断checked是否被选中、js操作checkedbox选中

    上图是实现效果. 下面贴代码 表的第一行也就是<th>中的代码,onclick事件是实现全选或者全不选效果. <th> <input id="allboxs&q ...

  8. vue table中使用多选的问题(翻页后如何保存已选项),联动echarts图表实现流量监控

    流量监控项目需求: 根据表格数据,添加多选功能,默认全选,根据已选项更新图表视图 1.表格需要多选 2.要联动图表,所以关键是要利用表格多选的触发回调函数 vue table中使用多选: 很简单,只需 ...

  9. ExtJS中,将Grid表头中的全选复选框取消复选

    今天发现公司产品用的EXTJS中使用Grid时,Grid表头中的全选复选框的选中状态不是很准确,就写了这个小扩展 在js中加入下面方法,在需要取消全选的地方调用即可,例:Ext.getCmp('gri ...

随机推荐

  1. winform中文本框,软键盘跟随

    private void textBox1_Click(object sender, EventArgs e) { //Control.MousePosition Point p = System.W ...

  2. 编译libjpeg

    本来以为编译libjpeg很容易,结果弄了半天. 先百度了下看下教程,一般是设置path,这里我也做了 我的电脑  -> 属性 -> 高级  -> 环境变量   ,添加环境变量PAT ...

  3. HttpServletRequest修改/添加header和cookie参数

    实现功能: 所有接口经过过滤器,获取每个接口的自定义头部(token) 判断如果是app访问,则给头部设置cookie,值为自定义token的值. 即:使用过滤器实现修改请求头headers 实现步骤 ...

  4. 环境变量PATH/cp命令/mv命令/文档查看cat/more/less/head/tail

    2.10 环境变量PATH 2.11 cp命令 2.12 mv命令 2.13 文档查看cat/more/less/head/tail which  rmdir 可以查到命令的路径 例如: ls 命令是 ...

  5. 【Ubuntu】录屏软件

    http://www.leesven.com/2378.html sudo apt-get install kazam

  6. SQL2005数据库置疑处理

    2005中遇到置疑.丢失日志时按照网上常见的MSSQL2000修复方法来做, 结果发现行不通,甚至连一步都做不下去.其实,在MSSQL2005在处理置疑问题的思 路与MSSQL2000是一致的,但具体 ...

  7. Java时间日期字符串格式转换大全

    import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...

  8. WPF送走控件的focus方法

    我们可以调用Focus()方法,让WPF控件获得焦点, 那我现在不想要焦点了, 如何把这个包袱抛出去? 可以,  恩, 没有Unfocus(), 但下面的方法也许可行(把焦点抛给另一个不知道的控件): ...

  9. 【AI】face_recognition

    1.pip install cmake 2.pip install boost 3.pip install dlib 4.pip install face_recognition

  10. TTL值

    我们在解析域名时经常出现 TTL 这个字段,里面默认写的是 10 分钟. 另外,有时候我们 ping 某域名或 IP 的时候,会出现 TTL= XXX. 一.什么是域名的 TTL 值? TTL(Tim ...