vue实现商品累计需要以下几点

1.添加商品
2.选中
3.删除功能
4.总计功能

  <div id="main">
<div class="con">
<h1>PRODUCT</h1>
<div class="add">
<span>商品:</span>
<input
v-model.trim="goods"
>
<span>价格:</span>
<input
v-model.trim="price"
@input="judge"
>
<button @click="add">添加</button>
</div>
<ul>
<li v-for="(val,key) in arr"
:class="{active:val.active}"
>
<input type="checkbox" v-model="val.active">
<span>{{val.name}}</span>
<span>${{val.price}}</span>
<!-- <span>修改</span> -->
<span @click="rm(val.id)">删除</span>
</li>
</ul> <div class="folter">
<span>total</span>
<span>{{sum}}</span>
</div>
<div
class="kuang"
:style="{display:tips}"
>
<span>确定要删除么?</span>
<button @click="sure">确定</button>
<button @click="cancel">取消</button>
</div> </div> </div>
<script src="../js/vue.min.js"></script>
 /*
1、添加商品
2、选中
3、删除
4、总计
*/
new Vue({
el:'#main',
created(){
// //请求数据,添加数据
// fetch('./data.json')
// .then(e=>e.json())
// .then(d=>{
// console.log(d);
// this.arr.push(...d);
// })
},
data:{
arr:[
{
id:1,
name:'apple',
price:20,
active:true
},{
id:2,
name:'orange',
price:23,
active:false
},
{
id:3,
name:'banana',
price:40,
active:false
}
],
goods:'',//商品
price:'',//价格
tips:'none',//提示框
num:null
},
methods:{
judge(){
//判断输入的价格是否为数字,且小于4位,小数保留两位数
if(!/^\d{1,4}(\.\d{1,2})?$/.test(this.price)){
alert('输入正确的价格');
}
},
add(){
let {price,goods} = this;
this.arr.unshift(
{
id:Date.now(),
name:goods,
price:price,
active:false
}
)
this.val = this.price = '';
},
rm(id){
this.tips = 'block';
this.num = id //把要删除的id,赋值给this.num,为了找到删除的那项
console.log(this.num);
},
sure(){
//把不是this.num的数据保留下来(过滤删除的id对应的数据)
this.arr = this.arr.filter(e=>e.id!=this.num);
this.tips = 'none';
this.num = null;
},
cancel(){
//隐藏弹框
this.tips = 'none';
this.num = null;
}
},
computed:{
/*
是vue专有的一个计算属性
当数据发生变化的时候,通过变化的数据,做另一件事
只要使用,一开始就会执行一次,之后只要数据发生变化就执行 定义:
函数(){
return 是什么,显示就是什么
}
使用:
{{函数名}} 注意:
函数名不要跟data中的数据一致
*/
sum(){
return '$' + this.arr.filter(e=>e.active).reduce((prev,num)=>prev+num.price,0);
}
}
});

vue实现商品累计效果的更多相关文章

  1. vue实现全选效果

    vue实现全选效果 接触vue快半年了,记得刚用vue做项目的时候遇到一个全选功能,当时到处百度也没有找到怎么实现,最后还是用了jquery进行dom操作实现的. 今天没事就顺手写了一个,感觉很简单, ...

  2. vue实现跑马灯效果

    vue实现跑马灯效果为阿中哥哥应援 1.效果图 2.实现代码 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. vue实现穿梭框效果

    vue实现穿梭框效果 一.总结 一句话总结: 用两个数组分别记录左右框框里面的值,用两个数组绑定checkbox,用来记录选中的checkbox值,根据选中的checkbox的值实现删除增加即可 1. ...

  4. 基于Vue实现拖拽效果

    参考地址:基于Vue实现拖拽效果 参考链接中讲的比较详细,我只使用了其中自定义指令的方法.整体代码如下: <template> <!-- 卡片 --> <div clas ...

  5. 黑马vue---10-11、Vue实现跑马灯效果

    黑马vue---10-11.Vue实现跑马灯效果 一.总结 一句话总结: 1. 给 [浪起来] 按钮,绑定一个点击事件   v-on   @ 2. 在按钮的事件处理函数中,写相关的业务逻辑代码:拿到 ...

  6. vue实现选项卡切换效果

    效果如下: 说明: 这里我使用的原理是利用vue中的v-show/显示隐藏指令,当为true的时候显示,为false的时候隐藏 1html代码: <head> <meta chars ...

  7. vue实现轮播效果

    vue实现轮播效果 效果如下:(不好意思,图有点大:) 功能:点击左侧图片,右侧出现相应的图片:同时左侧边框变颜色. 代码如下:(也可以直接下载文件) <!DOCTYPE html> &l ...

  8. Vue 实现展开折叠效果

    Vue 实现展开折叠效果 效果参见:https://segmentfault.com/q/1010000011359250/a-1020000011360185 上述链接中,大佬给除了解决方法,再次进 ...

  9. Vue过渡和动画效果展示(案例、GIF动图演示、附源码)

    前言 本篇随笔主要写了Vue过渡和动画基础.多个元素过渡和多个组件过渡,以及列表过渡的动画效果展示.详细案例分析.GIF动图演示.附源码地址获取. 作为自己对Vue过渡和动画效果知识的总结与笔记. 因 ...

随机推荐

  1. 【cf849D】Rooter's Song(思维)

    D. Rooter's Song 题意 x轴.y轴上有n个人,第i个人\(g_i==1\)则坐标为\((p_i,0)\)否则\((0,p_i)\),\(t_i\)秒后垂直所在坐标轴出发,到达边界x=w ...

  2. 「POJ-3608」Bridge Across Islands (旋转卡壳--求两凸包距离)

    题目链接 POJ-3608 Bridge Across Islands 题意 依次按逆时针方向给出凸包,在两个凸包小岛之间造桥,求最小距离. 题解 旋转卡壳的应用之一:求两凸包的最近距离. 找到凸包 ...

  3. 搭建web定时任务管理平台

    需要安装mysql及gityum -y install git mysql-server 下载安装go官网:https://golang.org/dl/wget https://redirector. ...

  4. Hdoj 1905.Pseudoprime numbers 题解

    Problem Description Fermat's theorem states that for any prime number p and for any integer a > 1 ...

  5. linux中文件的时间戳

    touch命令 touch用来创建新文件,或者修改时间戳. linux中的文件有三个时间点,利用stat命令查看: 1.atime:最后访问时间:文件最后一次被存取或执行的时间. 2.mtime:最后 ...

  6. 使用rt-thread中BSP-stm32 ENV构建工具报错

    @2019-01-23 [小记] --路径问题 参照rtt官方<STM32 系列 BSP 制作教程> 构建项目时出现如下错误 error1:打开 menuconfig 出错 解决方法: 根 ...

  7. <Android基础>(三) UI开发 Part 1

    1.常用控件 1)TextView 2)Button 3)EditText 4)ImageView 5)ProgressBar 6)AlertDialog 7)ProgressDialog 2.四种布 ...

  8. SCOI2009游戏 (数论+dp)

    题解 很显然,对于一个确定的排列,每个数字的移动规则是一定的,我们根据这个排列,把它抽象为i向a[i]连一条边,很显然最后会构成一个环,那么行数就是这些环长的lcm. 那么问题变成了把n任意进行划分, ...

  9. 再谈 javascript 数组去重

    前言 数组去重方法老生常谈,既然是常谈,我也来谈谈 双层循环 也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法: var array = [1,1, ...

  10. Django 路由

    创建好项目后在项目文件下的urls.py为设置路由 Django 有两种路由方式一种的精确路由 另一个为模糊路由 """mysite URL Configuration ...