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 相关文章推荐
Save a File Using a File Save Dialog Box
Jun 18 Javascript
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
Dec 25 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
vue使用echarts图表的详细方法
Oct 22 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
vue页面跳转实现页面缓存操作
Jul 22 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
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内核探索之解释器的执行过程
2015/12/22 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
python用字典统计单词或汉字词个数示例
2014/04/22 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
教师年终个人自我评价
2013/10/04 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
计算机专业自荐信
2014/05/24 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS
Redis 异步机制
2022/05/15 Redis