42.VUE学习之--组件之子组件使用$on与$emit事件触发父组件实现购物车功能
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="hdcms">
    <hd-news :lists="goods" @sum="total"></hd-news>
    总计:{{totalPrice}}元
</div>
<script type="text/x-template" id="hdNews">
    <table border="1" width="90%">
        <tr>
            <th>商品名称</th><th>商品价格</th><th>商品数量</th>
        </tr>
        <tr v-for="(v,k) in lists">
            <td>{{v.title}}</td><td>{{v.price}}</td>
            <td>
                <!--当input失去焦点时,会呼叫子组件里的sum()方法,sum()方法再通过@sum属性呼叫父组件里的tatal方法,从而再次执行计算-->
                <input type="text" v-model="v.num" @blur="sum">
            </td>
        </tr>
    </table>
</script>
<script>
    var hdNews = {
        template: "#hdNews",
        props: ['lists'],
        methods:{
            sum(){
                this.$emit('sum');
            }
        }
    };
    new Vue({
        el: '#hdcms',
        components: {hdNews},
        //页面加载完后,加自动执行total里的方法
        mounted(){
            this.total();
        },
        data: {
            totalPrice:0,
            goods:[
                {title:'iphone7Plus',price:100,num:1},
                {title:'后盾人会员',price:200,num:1},
            ]
        },
        methods:{
            total(){
                this.totalPrice=0;
                this.goods.forEach((v)=>{
                    this.totalPrice+=v.num*v.price;
                })
            }
        }
    });
</script>
</body>
</html>
效果:

42.VUE学习之--组件之子组件使用$on与$emit事件触发父组件实现购物车功能的更多相关文章
- 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法
		
(vue.js)vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法”问题疑问,本网通过在网上对“ (vue.js)vue ...
 - VUE 子组件向父组件传值 , 并且触发父组件方法(函数)
		
目标:封装一个 搜索组件 <子组件需要传一个或者多个搜索参数到父组件,然后父组件执行列表查询函数> 1.子组件 <div> <input v-model="l ...
 - 子组件通过$emit触发父组件的事件时,参数的传递
		
子组件.vue <template> <div> <el-table :data="comSchemaData" highlight-current- ...
 - vue中子组件触发父组件的方法
		
网上找了几种方法,下面这两种最实用,最明了 方法一:父组件方法返回是字符串或数组时用这种方法 子组件: <template> <button @click="submit& ...
 - vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题
		
Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素,它是通过使 ...
 - vue父组件传值和子组件触发父组件方法
		
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script> <scr ...
 - vue子组件使用自定义事件向父组件传递数据
		
使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称’,传递给父组件的数据) <!DOCTYPE html> <html lang= ...
 - vue 子组件 $emit方法 调用父组件方法
		
$emit方法 父组件 <template> <div> <child @callFather="activeSon"></child&g ...
 
随机推荐
- linux解压与参数介绍
			
linux下 各种解压文件使用方法:https://www.jianshu.com/p/ca41f32420d6 解压参数详解:http://www.cnblogs.com/jyaray/archiv ...
 - wcf  post
			
服务端: 1.接口 [OperationContract] [ServiceKnownType(typeof(CreatMicroBlogFeedViewModel))] [WebInvoke(Bod ...
 - while循环,break和continue,运算符,格式化输出
			
一丶while循环 while条件: 代码块(循环体) #数数 打印1-100 count = 1 while count <= 100: print(count) count += 1 执行顺 ...
 - css动画-模拟正余弦曲线
			
今天就写一个css3抛物线的动画吧= = 从左到右的抛物线动画,我们就暂且把动作分为匀速向右运动和变速的上下运动. 水平匀速运动我们可以利用 translateX(x):定义 2D 转换,沿着 X 轴 ...
 - 原生ajax瀑布流demo
			
最近听朋友们说起瀑布流挺多的,自己就去研究下了,一个简单的原生demo,分享给大家... 简单分为三个文档,有详细的注释:img:ajax.php:demo.php 其中img文件夹中放入图片 1.j ...
 - C#启动或停止 计算机中“服务”
			
第一.要添加一个引用System.ServiceProcess 第二.要在程序中使用命名空间ServiceProcess 代码片段: using System.ServiceProcess; Serv ...
 - python 之Requests库学习笔记
			
1. Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...
 - chrome中清除dns缓存
			
chrome中清除dns缓存 http://rss.code-mire.com/item/1005.htm web开发经常要做各种host绑定的切换,firefox下有个DNS Flusher插件,但 ...
 - vue组件总结(三)
			
一.什么是组件 组件(component)是Vue最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码,根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己的需要 ...
 - HDU 2191 悼念汶川地震(多重背包)
			
思路: 多重背包转成01背包,怎么转?把一种大米看成一堆单个的物品,每件物品要么装入,要么不装.复杂度比01背包要大.时间复杂度为O(vns)(这里S是所有物品的数量s之和).这个做法太粗糙了,但就是 ...