过滤器,事件,插槽与父子组件传递

本贴最后更新于 1642 天前,其中的信息可能已经时移俗易

1.编写 editCart 函数,使得能够修改商品数量和选中状态。

<a class="input-sub" v-on:click="editCart('minus', item)">-</a>

其中 editCart 函数可以直接传递参数,第一个参数代表加还是减,第二个参数是这个商品本身。
加法也同理。
同样 checked 也是这样,在函数中把他取反就可以了
2.编写过滤器

filters: {
            currency(value) {
                if (!value) return 0.00;
                return "¥" + value.toFixed(2) + "元";
            }
        },

3.使用过滤器:

<div class="item-price-total">{{item.productNum*item.productPrice | currency}}</div>

这样就会把这里边的那个数据格式化成为想要的格式。注意使用过滤器的时候只写过滤器的名字就行了,不能写成 currency()这种形式。
4.插槽
在 modal 组件中编写一个插槽

<slot name="message"></slot>

在使用插槽的地方使用插槽

<modal>
      <p slot="message">请问你你要删除此条元素吗</p>
</modal>

插槽的本质就是在一个组件里预留出来位置,然后在使用该组件的时候可以动态的向预留的位置中添加想要添加的东西。
4.控制 modal 的显示和关闭
首先为 modal 绑定一个属性来控制关闭还是打开

<modal :mdShow="modalConfirm">

这个变量 modalConfirm 必须在 data 里边定义
接下来点击删除按钮,出来确认弹框:

<a href="javascript:;" class="item-edit-btn" @click="delCartConfirm(item)">
//删除商品,打开对话框
            delCartConfirm(item) {
                //准备删除的对象
                this.delItem = item;
                this.modalConfirm = true;
            }

删除 modal.vue 中的 display:none 属性

接下来是如何把 mdShow 这个属性从 cart 传递给 modal,首先在 modal 的 props 中定义这个属性

在子组件中定义弹框的关闭事件,但是不是直接关闭,而是调用父组件传参进行关闭

<button class="md-close" @click="closeModal">关闭</button>  
methods: {
            closeModal() {
                this.$emit('close');
            }
        }

父组件中如何接受这个 close

<modal :mdShow="modalConfirm" @close="closeModal">
closeModal() {
                this.modalConfirm = false;
            }

最后把 md-show 这个类用 mdShow 这个元素绑定上去

<div class="md-modal modal-msg md-modal-transition" v-bind:class="{'md-show': mdShow}">

这一部分比较混乱,现在来捋一捋。首先按照顺序,正向,点击删除按钮,弹出对话确认框,触发 delCartConfirm 事件,modalConfirm 变成 true,接着 mdShow 也变成 true,mdShow 传递给子组件 modal 里,创建那个 md-show 类,显示出来对话框。

接着对话框打开之后如何关闭。首先 modal 里边的关闭按钮触发关闭事件 closeModal,该函数调用了 emit,即调用父组件传递给一个 close 参数,接着在父组件中寻找 @close,然后触发父组件的 closeModal 事件,把 modalConfirm 变成 false,接着 mdShow 也变成 false,这个就同上,删除 md-show 的类,对话框消失。

今天天气好冷啊。。。。😣

  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 26 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 43 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    172 引用 • 990 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1383 回帖 • 375 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 1 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 1 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 591 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    129 引用 • 793 回帖 • 1 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 43 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 93 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 347 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖 • 2 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    75 引用 • 145 回帖
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 2 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 424 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 692 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 72 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 2 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    369 引用 • 1212 回帖 • 581 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 426 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 123 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 53 关注