Vue.js实现价格计算器功能


Posted in Javascript onMarch 30, 2020

本文实例为大家分享了Vue.js实现价格计算器功能的具体代码,供大家参考,具体内容如下

实现效果:

Vue.js实现价格计算器功能

实现代码及注释:

<!DOCTYPE html>
<html>
<head>
 <title>价格计算器</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <style type="text/css">
 
 /* 隐藏未编译的数据绑定,直到Vue实例成功加载 */
 [v-cloak]{
 display: none;
 }
 *{
 padding: 0;
 margin: 0;
 }
 body{
 font: 15px/1.3 "微软雅黑";
 color: #545b64;
 text-align: center;
 }
 a, a:visited{
 outline: none;
 color: #389dc1;
 }
 a:hover{
 text-decoration: none;
 }
 section, footer, header, aside, nav{
 display: block;
 }
 
 /*-------------------------
 The order form
 --------------------------*/
 
 form{
 background-color: #d5d5d5;
 border-radius: 10px;
 box-shadow: 0 1px 1px #ccc;
 width: 400px;
 padding: 35px 45px;
 margin: 50px auto;
 box-shadow: 1px 0px 20px #f5f5f5;
 }
 
 form h1{
 color:#fff;
 font-size: 55px;
 font-family: "微软雅黑"
 font-weight: normal;
 line-height:1;
 text-shadow:2px 3px 0 rgba(0,0,0,0.1);
 font-weight: normal;
 }
 
 form ul{
 list-style:none;
 color:#fff;
 font-size:20px;
 font-weight:bold;
 text-align: left;
 margin:20px 0 15px;
 }
 
 form ul li{
 padding:15px 30px;
 background-color:#03c03c;
 margin-bottom:10px;
 box-shadow:0 1px 1px rgba(0,0,0,0.1);
 cursor:pointer;
 }
 
 form ul li span{
 float:right;
 }
 
 form ul li.active{
 background-color: orange;
 }
 
 div.total{
 border-top:1px solid rgba(255,255,255,0.5);
 padding:15px 30px;
 font-size:20px;
 font-weight:bold;
 text-align: left;
 color:#fff;
 text-shadow: 2px 2px 2px rgba(0,0,0,0.1);
 }
 
 div.total span{
 float:right;
 }
 </style>
 
</head>
<body>
 
<!-- v-cloak隐藏所有没有编译过的数据绑定,直到vue实例准备好 -->
 
<form id="main" v-cloak>
 <h1>价格计算器</h1>
 <ul>
 
 <!-- 循环这个服务数组,分配一个点击句柄,并且设置或移除active class -->
 <li v-for="service in services" v-on:click="toggleActive(service)" v-bind:class="{'active': service.active}">
 
 <!-- 显示这个数组中每个实体的名称和价格格式化, Vue有一个内置的货币筛选器用于对价格进行 -->
 
 {{service.name}} <span>{{service.price | currency}}</span>
 
 </li>
 </ul>
 
 <div class="total">
 
 <!-- 计算所有选定商品的总价格,并且格式化为货币显示方式 -->
 
 总价: <span>{{total() | currency}}</span>
 </div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
<script type="text/javascript">
 
 // 定义一个常规过滤器currency
 Vue.filter('currency', function(value){
 return '¥' + value.toFixed(2);
 });
 
 var demo = new Vue({
 el: '#main',
 data: {
 // 定义model属性,view将会循环
 // 通过services数组产生一个li
 // 定义services每一项的元素
 
 services: [
 {
  name: "网站开发",
  price: 300,
  active: true
 },
 {
  name: "设计",
  price: 400,
  active: false
 },
 {
  name: "一体化整合",
  price: 250,
  active: false
 },
 {
  name: "操作培训",
  price: 220,
  active: false
 }
 ]
 },
 
 methods: {
 toggleActive: function(s){
 s.active = !s.active;
 },
 total: function(){
 var total = 0;
 this.services.forEach(function(s){
  if(s.active){
  total+=s.price;
  }
 });
 return total;
 }
 }
 });
</script>
 
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
使用javascript实现监控视频播放并打印日志
Jan 05 Javascript
DOM 事件流详解
Jan 20 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
JS如何生成一个不重复的ID的函数
Dec 25 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 08 Javascript
浅谈es6中的元编程
Dec 01 Javascript
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
js微信分享实现代码
Oct 11 #Javascript
Vue.js实现实例搜索应用功能详细代码
Aug 24 #Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 #Javascript
JSON创建键值对(key是中文或者数字)方式详解
Aug 24 #Javascript
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 #jQuery
webpack学习笔记之优化缓存、合并、懒加载
Aug 24 #Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 #Javascript
You might like
php实现的漂亮分页方法
2014/04/17 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python常见的pandas用法demo示例
2019/03/16 Python
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
介绍一下#error预处理
2015/09/25 面试题
C++的几个面试题附答案
2016/08/03 面试题
存储过程的优点有哪些
2012/09/27 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
应届生护士求职信
2013/11/01 职场文书
团队队名口号大全
2014/06/06 职场文书
小学运动会班级口号
2014/06/09 职场文书