首页 > 其他 > 详细

vue监听购物车数量变化及实现模糊查询

时间:2020-10-05 21:55:58      阅读:84      评论:0      收藏:0      [点我收藏+]

要点:使用过滤器和计算属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue监听购物车数量及模糊查询</title>
    <script src="vue.js"></script>
  <!-- 引入样式 -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
    <div id="app">  
        <div style="margin: 10px 0;">
            <label>名称搜索:</label> <input v-model="searchInput" type="text" placeholder="请输入查询内容" style="width:300px;padding: 5px;">     
        </div>
    
    <el-table :data="searchData"  border style="width: 100%">
      <el-table-column label="图片">
          <template slot-scope="scope">
              <img :src="scope.row.url">
          </template>
      </el-table-column>
      <el-table-column prop="name" sortable label="商品名称">
      </el-table-column>
      <el-table-column sortable label="商品数量">
          <template slot-scope="scope">
              <input value="-" @click="scope.row.count-=1" :disable="scope.row.count<=0" />
              <span>{{scope.row.count}}</span>
              <input value="+"  @click="scope.row.count+=1" :disable="scope.row.count<=10" />
          </template>
      </el-table-column>
      <el-table-column prop="price" sortable label="商品单价">
      </el-table-column>
      <el-table-column sortable label="商品金额">
          <template slot-scope="scope">
              <span>{{scope.row.count*scope.row.price | priceFilter(3)}}</span>          
        </template>
      </el-table-column>
      <el-table-column prop="" sortable label="操作">
        <template>
          <el-button>商品详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div>{{totalCount}}件商品总计(不含运费):¥{{totalAmount}}</div>
  </div>

  <script type="text/javascript">
      
    var vm = new Vue({
      el: "#app",
      data:{
          searchInput:‘‘,
          items:[{
              name:苹果,price:10,count:10,url:./images/unlock.png    
          },{
              name:车厘子,price:34,count:2,url:./images/unlock.png    
          },{
              name:火龙果,price:30,count:3,url:./images/unlock.png    
          },{
              name:桃子,price:20,count:10,url:./images/unlock.png    
          }]
      },
      filters:{ // 过滤器,文本格式化
          priceFilter:function(data,n){
              return +data.toFixed(n) // 保留2位小数
          }
      },
      computed:{ // 计算属性
          searchData:function(){
              var self =this
              // filter() 筛选
              // 现在输入文字之后没有查到结果,因为this的指向不对,在回调函数和定时器中this的指向是window
              if (!this.searchInput) return this.items;
              return this.items.filter(function(item){
                  return item.name.indexOf(self.searchInput)!=-1
              })
          },
          totalCount:function(){
              // var n=0;
              // this.items.forEach(function(item,index){
              //     n+=item.count
              // });
              // return n;
              
              // 换一种写法,将这里的items换成searchData,因为当我们查询了指定的水果之后,总计的数量和金额也要显示当前查询的
              
              return this.searchData.reduce(function(total,cur){
                  return total+cur.count
              },0)  //0 表示初始化的值
          },
          totalAmount:function(){
              return this.searchData.reduce(function(total,cur){
                  return total+cur.count*cur.price
              },0)
          }
      }
  })

    // 数组的reduce方法:var arr =[1,2,3,1,2,5]
    // var a =arr.reduce(function(total,cur){
    //     return total+cur
    // },10) 10是初始值,表示在10的基础上相加
    //  total就是前面所加的和,cur指当前的数组值
     
     // 模糊查询前端可以做,但是如果数据是分页展示的,建议后端做模糊查询,因为每次点击页码来展示数据的时候,是向后端接口传参,然后返回数据,前端做模糊查询的话是在所有数据都有的情况下做模糊查询
  </script>
</body>
</html>

 

vue监听购物车数量变化及实现模糊查询

原文:https://www.cnblogs.com/lita07/p/13771036.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!