小知识点:

vue中计算属性有缓存(对象属性变化时才会更新),方法没有缓存,所以计算属性比方法效率高
js中let有块级作用域,var没有块级作用域,所以var是有缺陷的
this.letters[0] = 'bb'; //vue中,这种做法并不是响应式的;推荐使用响应式方法:this.letters.splice(0,1,'cc');

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
<div id="app">
<ul v-if="books.length">
<ul>
<li v-for="(v,k) in books">
<button @click="add(k,false)" :disabled="v.num <= 1">-</button>
<input type="text" :value="v.num">
<button @click="add(k,true)">+</button> <div>{{v.name}}</div>
<div>{{v.price * v.num | showPrice}}</div> <button @click="rm(k)">移除</button>
</li>
</ul>
总价{{total_price | showPrice}}
</ul> <div v-else>当前没有图书</div>
</div>
</body>
<script>
let v = new Vue({
el : "#app",
data : {
books : [
{
name : '天龙八部',
price : 33,
num : 1,
},
{
name : '鹿鼎记',
price : 13,
num : 1,
},
]
},
methods : {
add : function(k,boo){
let obj = this.books[k];
if(boo) {
obj.num+=1;
}else{
obj.num-=1;
}
//this.books.splice(k,k+1,obj);
},
rm : function(k){
this.books.splice(k,1);
}
},
// 计算属性
computed : {
total_price : function(){
let total = 0;
for(let i = 0;i < this.books.length;i++ ){
total += (this.books[i].price * this.books[i].num);
}
return total;
}
},
// 过滤器
filters : {
showPrice : function(price){
return '$' + price.toFixed(2);
}
}
})
</script>
</html>

vue图书小案例的更多相关文章

  1. Vue.js小案例、生命周期函数及axios的使用

    一.调色框小案例: 随着三个滑动框的变化,颜色框的颜色随之改变 1.1.实例代码 <!DOCTYPE html> <html lang="en" xmlns:v- ...

  2. Vue.js小案例(2)

    即时搜索 这个例子主要应用了vue.js的自定义过滤器,可以通过Vue.filter()注册一个全局过滤器,具体用法可以参考这里,vue.js也提供了一些内置过滤器. CSS代码: [v-cloak] ...

  3. Vue.js小案例(1)

    数据绑定 数据绑定是vue.js的基础.本例中就是利用了vue.js的v-model指令在表单元素上创建双向数据绑定. <!--这是我们的View--> <div id=" ...

  4. 一个VUE的小案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Vue小案例(一)

    案例需求: 创建一个品牌展示表格,表头有编号(id),品牌名称(name),创建时间(time)和操作,需要实现的功能是对数据的增删操作,和时间的格式化. 思路分析:在开发之前需要想清楚要用到Vue中 ...

  6. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  7. angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例

    基本语法: 1.双向数据绑定 vue 指令:v-model="msg" react constructor(){ this.state{ msg:"双向数据绑定" ...

  8. Vue小案例 之 商品管理------学习过滤器 使用过滤器处理日期的格式

    代码学习过滤器 过滤器介绍:过滤模型数据,在数据显示前做预处理操作: 内置过滤器:在1.x中,Vue提供了内置过滤器,但是在2.x中已经完全废除: 解决办法: (1)使用第三方库来替代1.x中的内置过 ...

  9. vue小案例--简易评论区

    一.小案例(评论区) 1.流程 (1)分析静态页面.(vue项目创建参考https://www.cnblogs.com/l-y-h/p/11241503.html)(2)拆分静态页面,变成一个个组件. ...

随机推荐

  1. ajax发送请求下载字节流形式的excel文件

    背景 开发项目中导出功能,因为数据量有点大,所以导出可能需要时间有点长,所以想用ajax异步请求. 存在问题 利用传统的js和jquery提供的ajax相关获取响应的方式是无法实现excel文件下载的 ...

  2. Uva1213(线性筛模板+dp)

    题意: 把n拆成k个不同素数的和,有多少种拆法. 解法: 打表后dp即可,这个dp的问题可以归纳为:在n个数中选k个数,使得和m的方案数 #include<cstdio> #include ...

  3. ImportError: libzmq.so.5 报错

    https://pkgs.org/download/libzmq.so.5()(64bit) # rpm -ivh zeromq-4.1.4-6.el7.x86_64.rpm

  4. Java第六节课总结

    动手动脑: 多层的异常捕获-1:ArrayIndexOutOfBoundsException/内层try-catch发生ArithmeticException多层的异常捕获-2:ArrayIndexO ...

  5. Hyperparameter tuning

    超参数调整 详细可以参考官方文档 定义 在拟合模型之前需要定义好的参数 适用 Linear regression: Choosing parameters Ridge/lasso regression ...

  6. Bad Hair Day【单调栈】

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzMAAANgCAIAAACX06G4AAAgAElEQVR4Aey9e5RlW13fuw40HORxfI ...

  7. 【PHP】使用PHP抓取Bing每日图像并为己所用

    Bing搜索的首页每天都会推送一张很漂亮的图片,把它保存下来,当做电脑桌面或是自己的网站背景图还不是美滋滋…… 今天的bing图片是这样的 既然要抓取这张图片,首先就得弄清这张图是从何而来的.经过对必 ...

  8. Tomcat中相关配置详解

    tomcat的相关配置 server.xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 属性 ...

  9. 自定义Redux

    实现mini版redux 1. 理解redux模块 1). redux模块整体是一个对象模块 2). 内部包含几个函数 createStore(reducers) // reducers: funct ...

  10. chrome json接口数据 插件

    chrome json接口数据 插件 JSON-Handle 官网 下载后 地址栏输入 chrome://extensions/ 将下载的文件拖入页面 OK