vue图书小案例

小知识点:

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>

原文地址:https://www.cnblogs.com/cl94/p/12234873.html

时间: 2024-10-10 07:03:36

vue图书小案例的相关文章

Vue.js小案例(2)

即时搜索 这个例子主要应用了vue.js的自定义过滤器,可以通过Vue.filter()注册一个全局过滤器,具体用法可以参考这里,vue.js也提供了一些内置过滤器. CSS代码: [v-cloak] { display: none; } *{ margin:0; padding:0; } body{ font-family:Microsoft YaHei; text-align:center; } li{ list-style:none; } .bar{ background-color:#5

Vue.js小案例(1)

数据绑定 数据绑定是vue.js的基础.本例中就是利用了vue.js的v-model指令在表单元素上创建双向数据绑定. <!--这是我们的View--> <div id="app"> <p>{{ message }}</p> <input type="text" v-model="message"/> </div> <script> // 这是我们的Model n

图书借阅的小案例

这个小案例,主要练习类和方法的创建与调用 void Main() { while (true) { Console.WriteLine ("请输入标题或作者"); var key = Console.ReadLine().Trim(); Library.Search(key).Dump(); Console.WriteLine ("请输入要借阅/归还的图书编号"); var id = Convert.ToInt32(Console.ReadLine()); var

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

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析 Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 一.各有千秋 两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这

VUE小案例--跑马灯效果

自学Vue课程中学到的一个小案例,跑马灯效果 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="

vue小案例--简易评论区

一.小案例(评论区) 1.流程 (1)分析静态页面.(vue项目创建参考https://www.cnblogs.com/l-y-h/p/11241503.html)(2)拆分静态页面,变成一个个组件.(3)对组件编码,生成动态页面. 2.静态页面 参考来源:https://www.bilibili.com/video/av49099807/?p=22&t=1223 [举例:] <!DOCTYPE html> <html> <head> <meta char

Vue iview中的render小案例3

当我按下play.穿梭在大街小巷没什么不对.每个人都会.只是你在束缚自己.快来做个一等一的player.要求自己不能够太普通.一定必须要去做点成就 Vue iview中的render小案例 第一个数据比较好拿是对象直接.就可以,第二个是数组所以需要遍历会麻烦些 工序一道也少不了,就像下面迟早会补齐的 每天记录一点点 { title: "场馆地址", // key: "gymnasium.name" render: (h, params) => { return

Vue,品牌列表案例(仅添加,删除,搜索,全局过滤器,私有过滤器)

Vue,品牌列表案例(仅添加,删除,搜索,全局过滤器,私有过滤器) 添加了时间过滤器(私有的) 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script src="../../js/vue.js"></script> 7 <link rel=&qu

todo 小案例

1. todo 小案例完成 需求分析使用 vuejs 完成一个todo小项目,todo应用主要是用于记录用户要做的事情. 参考原型http://todomvc.com/examples/vue/ 实现的功能1. todo 展示2. todo 删除3. 筛选 代码实操源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&g