前端-vue基础69-购物车3标题组件和结算组件

简介: 前端-vue基础69-购物车3标题组件和结算组件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <div class="container">
            <my-cart></my-cart>
        </div>
    </div>
    <script type="text/javascript" src="./js/vue.js"></script>
    <script>
        var CartTitle = {
            props: ['uname'],
            template: `
            <div class="title">{{uname}}的商品</div>
            `
        }
        var CartList = {
            template: `
            <div>
                    <div class="item">
                        <span>小米</span>
                        <div class="name"></div>
                        <div class="change">
                            <a href="">-</a>
                            <input type="text" class="num">
                            <a href="">+</a>
                        </div>
                        <div class="del"></div>
                    <div class="item">
                        <span>小米</span>
                        <div class="name"></div>
                        <div class="change">
                            <a href="">-</a>
                            <input type="text" class="num">
                            <a href="">+</a>
                        </div>
                        <div class="del"></div>
                    </div>
                    <div class="item">
                        <span>小米</span>
                        <div class="name"></div>
                        <div class="change">
                            <a href="">-</a>
                            <input type="text" class="num">
                            <a href="">+</a>
                        </div>
                        <div class="del"></div>
                    </div>
                    <div class="item">
                        <span>小米</span>
                        <div class="name"></div>
                        <div class="change">
                            <a href="">-</a>
                            <input type="text" class="num">
                            <a href="">+</a>
                        </div>
                        <div class="del"></div>
                    </div>
                    <div class="item">
                        <span>小米</span>
                        <div class="name"></div>
                        <div class="change">
                            <a href="">-</a>
                            <input type="text" class="num">
                            <a href="">+</a>
                        </div>
                        <div class="del"></div>
                    </div>
                </div>
            </div>
            `
        }
        var CartTotal = {
            props: ['list'],
            template: `
            <div class="total">
                    <span>总价{{total}}</span>
                    <button>结算</button>
                </div>
            `,
            computed: {
                total: function() {
                    //计算
                    var t = 0;
                    this.list.forEach(item => {
                        t += item.price * item.num;
                    });
                    return t;
                }
            }
        }
        Vue.component('my-cart', {
            data: function() {
                return {
                    uname: '张三',
                    list: [{
                        id: 1,
                        name: 'TCL彩电',
                        price: 1000,
                        num: 1,
                    }, {
                        id: 2,
                        name: 'TCL彩电',
                        price: 1000,
                        num: 1,
                    }, {
                        id: 3,
                        name: 'TCL彩电',
                        price: 1000,
                        num: 1,
                    }, {
                        id: 4,
                        name: 'TCL彩电',
                        price: 1000,
                        num: 1,
                    }, {
                        id: 5,
                        name: 'TCL彩电',
                        price: 1000,
                        num: 1,
                    }, ]
                }
            },
            template: `
            <div class='cart'>
            <cart-title :uname='uname'></cart-title>
            <cart-list></cart-list>
            <cart-total :list='list'></cart-total>
            </div>
            `,
            components: {
                'cart-title': CartTitle,
                'cart-list': CartList,
                'cart-total': CartTotal,
            }
        })
        var vm = new Vue({
            el: '#app',
            data: {
            }
        })
    </script>
</body>
</html>

image.png

相关文章
|
1天前
|
存储 JavaScript 前端开发
使用Vue.js构建交互式前端的技术探索
【5月更文挑战第12天】Vue.js是渐进式前端框架,以其简洁和强大的特性深受开发者喜爱。它聚焦视图层,采用MVVM模式实现数据与视图的双向绑定,简化开发。核心特性包括响应式数据绑定、组件化、模板系统和虚拟DOM。通过创建Vue实例、编写模板及定义方法,可以构建交互式前端,如计数器应用。Vue.js让复杂、交互式的前端开发变得更加高效和易维护。
|
2天前
|
JavaScript 前端开发
vue3中使用动态组件
vue3中使用动态组件
|
2天前
|
JavaScript 前端开发 容器
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
Vue 3 中 <transition-group> 组件报错的非 props 属性传递问题
12 1
|
2天前
|
移动开发 JavaScript 前端开发
ruoyi-nbcio-plus基于vue3的flowable的自定义业务显示历史信息组件的升级修改
ruoyi-nbcio-plus基于vue3的flowable的自定义业务显示历史信息组件的升级修改
|
2天前
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable的自定义业务撤回申请组件的升级修改
ruoyi-nbcio-plus基于vue3的flowable的自定义业务撤回申请组件的升级修改
10 2
|
2天前
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable流程查看器组件的升级修改
ruoyi-nbcio-plus基于vue3的flowable流程查看器组件的升级修改
|
2天前
|
移动开发 前端开发 JavaScript
VUE3内置组件Transition的学习使用
VUE3内置组件Transition的学习使用
|
2天前
|
JSON JavaScript 前端开发
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
|
2天前
|
移动开发 前端开发
ruoyi-nbcio-plus的Vue3前端升级组件后出现的问题(二)
ruoyi-nbcio-plus的Vue3前端升级组件后出现的问题(二)
|
2天前
|
移动开发 前端开发 JavaScript
ruoyi-nbcio-plus的Vue3前端升级组件后出现的问题(一)
ruoyi-nbcio-plus的Vue3前端升级组件后出现的问题(一)
13 2