-
2020-12-22 17:12:15
分数那里以监听的形式计算,当大题小题数组数据发生变化的时候,分数重新计算
原谅我在马路上走着,如果还没解决,明天贴代码给你
٩(˃̶͈̀௰˂̶͈́)و
补充:粗略写了一下过程;
预设小题分值:
该题总分:
增加一个小题按钮
设置该小题分值:
增加一个大题按钮
更多相关内容 -
解决vue 表格table列求和的问题
2020-12-22 17:12:12本身就用了element-ui,但是订单管理有个需求使用element-ui table组件实现不了,只能退而求其之用了原生的table,功能是几乎满足需求了,但是还有个小问题就是列求和没搞定,这可咋整啊。看了element-ui是有这么个...最近在给朋友做一个项目,因为是B端,所以少不了表格。
本身就用了element-ui,但是订单管理有个需求使用element-ui table组件实现不了,只能退而求其之用了原生的table,功能是几乎满足需求了,但是还有个小问题就是列求和没搞定,这可咋整啊。看了element-ui是有这么个功能,遂翻开源码看了下也没看出啥话头,心想算了,自己来实现,网上搜了下,偶然看到一位仁兄的写法,拿过来稍微修改了下,果真是有用,在此感谢那位仁兄!(我本身对前端不专业,侧后端)
下面贴代码:
/**
javascript 部分
order.prods 是产品数组,即你要统计的那组数组
prod_amount 是计算的列名,我这里指的是商品数量
row.prod_amount*row.prod_price 这里我是要计算商品金额(单价*数量)所以这样写,如果你是计算其他,那就跟上面的商品数量一样直接写列名
**/
computed: {
sumAmount(){
return this.order.prods.map(
row=>row.prod_amount).reduce(
(acc, cur) => (parseFloat(cur) + acc), 0)
},
sumMoney(){
return this.order.prods.map(
row=>row.prod_amount*row.prod_price).reduce(
(acc, cur) => (parseFloat(cur) + acc), 0)
}
},
//html显示计算结果部分
合计{{sumAmount.toFixed(2)}}{{sumMoney.toFixed(2)}}元效果图:
以上这篇解决vue 表格table列求和的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
-
Vue监听和计算属性
2021-11-12 09:23:31Vue监听和计算属性 watch监听属性 这个属性用来监视某个数据的变化,并触发相应的回调函数执行。 基本用法添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值...Vue监听和计算属性
watch监听属性
这个属性用来监视某个数据的变化,并触发相应的回调函数执行。
基本用法添加watch属性,值为一个对象。对象的属性名就是要监视的数据,属性值为回调函数,每当这个属性名对应的值发生变化,就会触发该回调函数执行。
回调函数有2个参数:
-
newVal,数据发生改变后的值。
-
oldVal,数据发生改变前的值。
计数器
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <div>计数器{{ shu }}</div> <span>改变前: {{ov}}</span> <span>改变后: {{nv}}</span> <br /> <button @click="shu++">加一</button> </div> <script> var vm = new Vue({ el: '#app', data: { shu:1, ov:0, nv:0 }, methods:{ } }) vm.$watch("shu",function(nval,oval){ vm.$data.ov = oval vm.$data.nv = nval }) </script> </body> </html>
添加监听,同时将计数器改变前的值赋值给变量ov,将改变后的值赋值给变量nv
vm.$watch("shu",function(nval,oval){ vm.$data.ov = oval vm.$data.nv = nval })
购物车
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <table> <tr> <th>序号</th> <th>商品名称</th> <th>商品价格</th> <th>购买数量</th> <th>操作</th> </tr> <tr v-for="sp in sps"> <td>{{ sp.id }}</td> <td>{{ sp.name }}</td> <td>{{ sp.money }}</td> <td> <button v-on:click="sp.sum=sp.sum-1">-</button> {{ sp.sum }} <button v-on:click="sp.sum=sp.sum+1">+</button> </td> <td> <button v-on:click="sp.sum=0">重置</button> </td> </tr> </table> <div > 总价:{{ getmaney() }} </div> </div> <script> var vm = new Vue({ el: '#app', data: { sps:[ { id:1, name:"苹果13", money:6000, sum:1 }, { id:2, name:"苹果12", money:5000, sum:1 }, { id:3, name:"苹果11", money:4000, sum:1 } ] }, methods:{ getmaney:function(){ var m=0; for(var x=0;x<this.sps.length;x++){ m=m+this.sps[x].money*this.sps[x].sum; } return m; } } }) </script> </body> </html>
得出总的费用
getmaney:function(){ var m=0; for(var x=0;x<this.sps.length;x++){ m=m+this.sps[x].money*this.sps[x].sum; } return m; }
全选与取消全选
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <input type="checkbox" id="a" value="a" v-model="che"/> <label for="a">a</label> <input type="checkbox" id="b" value="b" v-model="che"/> <label for="b">b</label> <input type="checkbox" v-model="checked" id="bok" v-on:change="ckall()" /> <label for="box">全选</label> </div> <script> var vm = new Vue({ el: '#app', data: { checked:false, che:[], shuzu:["a","b"] }, methods:{ ckall:function(){ //全选状态 if(this.checked){ this.che = this.shuzu }else{ //取消全选 this.che=[] } } }, watch:{ "che":function(){ //判断是否全选 if(this.che.length == this.shuzu.length){ this.checked=true }else{ this.checked=false } } } }) </script> </body> </html>
计算属性
computed
特点:
- 在computed属性对象中定义计算属性的方法,在页面上使用{{方法名}}来显示计算结果。
- 通过getter/setter来显示和监视属性数据。
- 计算属性存在缓存,多次读取只执行一次getter。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <p>{{ mess }}</p> <p>{{ remess }}</p> <p>{{ mess.split('').reverse().join('') }}</p> </div> <script> var vm = new Vue({ el: '#app', data:{ mess:'abcd' }, computed: { remess:function(){ return this.mess.split('').reverse().join('') } } }) </script> </body> </html>
methods
computed基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用methods,在重新渲染的时候,函数总会重新调用执行。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <input v-model="mess" /> <p>{{ mess }}</p> <p>{{ remess }}</p> <p>{{ remess2() }}</p> </div> <script> var vm = new Vue({ el: '#app', data:{ mess:'abcd' }, computed: { remess:function(){ return this.mess.split('').reverse().join('') } }, methods: { remess2:function(){ return this.mess.split('').reverse().join('') } } }) </script> </body> </html>
setter
当页面获取某个数据的时候,先会在data里面找,找不到就会去计算属性里面找,在计算属性里获取数据时会自动执行get方法,同时也提供了set方法。computed属性默认只有getter,不过在需要时也可以提供一个setter。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="app"> <p>{{ site }}</p> </div> <script> var vm = new Vue({ el: '#app', data: { name: 'xiaowang', cls:'01' }, computed:{ site:{ get: function(){ return this.name+' '+this.cls }, set: function(Value){ var names = Value.split('|') this.name = names[0] this.cls = names[1] } } } }) vm.site = 'xiaowang|01'; document.write('name:'+vm.name); document.write('<br>'); document.write('class:'+vm.cls); </script> </body> </html>
-
-
vue.js的简单自动求和计算实例
2020-12-22 17:12:15一、导入vue.js二、前端页面我用了一个表格,话不多说直接上代码数学物理英语总分{{sum}}平均分{{average}}二、 js代码1.创建一个 vue容器 在el中写你的容器id。2.在data中写你的数据值,注意与html页面中的v-model....一、导入vue.js
二、前端页面
我用了一个表格,话不多说直接上代码
数学 物理 英语 总分 {{sum}} 平均分 {{average}} 二、 js代码
1.创建一个 vue容器 在el中写你的容器id。
2.在data中写你的数据值,注意与html页面中的v-model.number=中写的相对应。
(v-model是负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理)
math:后面也可以写固定的值像math:“90”,以此类推
3.绑定你的表达式,用computed监控前面定义的变量并写一个方法。
注意:{{}}里面要与js里面对应
我简单写了个求和与平均值的方法
4.在文本框里输入数字就可以自动进行动态的求和,平均值计算了,是不是很方便。
js代码如下
var vuetest = new Vue({
el:'#vuetest',
data:{
math:'',
physics:'',
english:'',
},
computed :{
sum:function () {
return parseFloat(this.math)+this.physics+this.english;
},
average :function(){
return Math.round(this.sum/3);
}
}
});
效果
以上这篇vue.js的简单自动求和计算实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
-
Vue css js 多行多列实现
2021-08-05 00:31:061 2 3 4 自己实现 {{item.id}} 有些说css控制有时候不起作用,那么就需要js来控制 js 实现 {{item.id}} {{dataList[index+1].id}} 这种方式虽然可以实现数据换行,但是要写很多逻辑,而且要算好下标,感觉也不是很... -
Vue.js计算属性和样式
2021-02-11 15:21:05可以通过这个属性来计算得出另外一个值,并且当原属性改变它也会相应改变通篇读下来有两个属性:computed和watch 。一个方法:methods计算属性:基于它的依赖缓存。计算属性只有在它的相关依赖发生改变时才会重新... -
Vue中计算属性,方法和观察者之间的区别
2020-12-19 11:45:31对于那些刚开始学习Vue的人来说,方法,计算属性和观察者之间的差异让人有些困惑。尽管经常可以使用它们中的每一个来完成或多或少相同的事情,但是知道它们在哪些方面优于其他的是很重要的。在这个快速技巧中,我们... -
Vue中的方法,属性计算和观察者
2020-12-19 11:45:32我喜欢使用Vue的原因之一是,Vue中的methods、computed和watchers的使用是多么的有用。如果没有彻底的理解它们之间的区别,就很难充分利用Vue的功能。尽管如此,我看到的大多数人对这个框架感到困惑,他们也会其中的... -
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2020-10-18 02:37:08主要介绍了关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性),需要的朋友可以参考下 -
vue.js封装多列布局拖拽(grid布局)
2020-12-30 10:13:58先看效果多列布局拖拽组件有替换和重排两种方式,默认是重排方式,类似于手机九宫格的重排。组件主要实现思路:计算出每个可拖拽组件的可移动范围,移动之后计算出目标位置的index,如果方式为重排,重新排列数组... -
vue-draggable的多列拖动与拷贝拖拽(不删除源数据列)
2022-05-06 19:40:47vue-draggable的多列拖动与拷贝拖拽(不删除源数据列)Demo所用属性所遇困难 Demo 官方文档 录屏软件:screenToGif (将视频转为Gif,我认为简单又好操作) 我深知,文字的感知不如图片,图片的感知不如视频,所以... -
在vue中实现Swiper多行多列布局
2019-12-27 18:40:07这个问题困扰了本人好几天,调样式调的头疼,最后同组的老大给我指点迷津,其实不必要每个swiper容器都要将...参考swiper官方文档的示例进行更改,将html换到vue中即可, 代码如下: template中定义好数据,这里就用... -
⑦ Vue的动态数据计算
2020-12-31 12:19:48计算属性的getter和setter方法 computed 提供了一个 getter 和 setter 方法,默认情况下,我们只需要关注 computed 的 getter 方法,看看官网给出的例子,拼接字符串: <div id="app"> {{ fullname }} </div> ... -
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2021-01-19 19:05:39mounted() { // 在mounted中监听表格scroll...// target中的属性很多,可以通过控制台查看—-clientWidth可以获取除滚动条外的可视区域宽度 adjustTable(event) { this.clientWidth = event.target.clientWidth; }, -
vue列表固定列滚动
2021-03-15 20:25:56vue列表固定列滚动 -
AntDesignVue表格中列的自定义隐藏与展示
2022-03-11 12:17:13antDesignVue中table列的隐藏与展示 -
vue element 表格自定义设置合计列
2021-10-12 08:51:38} // 列表的下标 第几列需要合计就判断 === 第几列下标 if (index === 7 || index === 8 || index === 9 || index === 10) { const values = data.map(item => Number(item[column.property])); if (!values.every... -
Vue 自适应高度表格的实现方法
2020-11-20 15:04:31本人是做后台开发的,由于公司业务要求需要将前后台模块进行分离,两年前选择使用vue-element-admin 项目进行前台的开发,该框架集成了很多功能,特别适合对 Vue 很陌生的新手,公司项目组成员接受程度普遍较高。... -
VUE初体验问题汇总计算属性问题computed和methods方法
2021-03-16 20:58:42VUE初体验 计算属性问题Vue computed计算属性 Vue computed计算属性 1.关于computed属性,我认为最重要的问题在于他和methods的区别,菜鸟教程中给出相关的主要区别是:我们可以使用 methods 来替代 computed,效果... -
vue项目中table表格固定表头和首尾列
2021-10-22 10:02:45在html中实现table表格固定表头和首尾列的方法和文章很多,本文就不再赘述。 本文主要介绍vue项目中三种情景下实现table表格固定表头和首尾列 情景一:vue+element 只要在el-table元素中定义了height属性,即可实现... -
Vue 中计算属性实现动态循环出的多个 select 不能重复选择相同的数据
2021-03-17 15:01:40Vue 中计算属性实现动态循环出的多个 select 不能重复选择相同的数据前言实现逻辑核心代码1.结构2.数据3.方法4.计算属性总结 前言 通过计算属性return的值可以保证相对独立,又可以在其依赖的属性的值发生变化时... -
Vue中v-for的数据分组实例
2020-11-28 04:32:22使用Vue.js可以很方便的实现数据的绑定和更新,有时需要对一个一维数组进行分组以方便显示,循环可以直接使用v-for,那分组呢?这里需要用到vue的computed特性,将数据动态计算分组。 代码如下: <!DOCTYPE ... -
vue——动态控制表格列的显示和隐藏
2019-08-19 11:10:18如图,为要实现的需求,即右键table的表头弹出菜单栏,通过勾选多选框的内容来控制表格列的显示和隐藏。 1. HTML部分(elemen-ui): <el-table :data="list" border fit @header-contextmenu="contextmenu"> ... -
vue的table 一列的数据太多了怎么处理??用的iview
2020-03-17 17:15:17vue的table 一列的数据太多了怎么处理??用的iview vue.js table 前端 如图,我这个字段数据太多了。一般遇到这种问题怎么处理?? 阅读 1.1k 评论 更新于 2019-07-04 6 个回答 得票时间 kidddder ... -
Vue+Element-ui Table 列求和
2020-06-01 13:12:28Vue+Element-ui Table 列求和Vue代码求和getSummaries效果图 Vue代码 <el-table v-loading="loading" :data="standardList" @sort-change='sortChange' :summary-method="getSummaries" show-summary @...