昆明网站的优化免费开网店的app

news/2025/9/24 7:22:23/文章来源:
昆明网站的优化,免费开网店的app,wifi网络服务商电话,如何设计自己的网站组件的自定义事件 一种组件间通讯的方式#xff0c;适用于#xff1a;子组件 — 父组件 绑定自定义事件 第一种方式:在父组件中写单标签1.Demo 事件名方法2.Demo v-on:事件名方法/第二种方式:使用ref绑定(配置在生命周期中)this…组件的自定义事件 一种组件间通讯的方式适用于子组件 — 父组件 绑定自定义事件 第一种方式:在父组件中写单标签1.Demo 事件名方法2.Demo v-on:事件名方法/第二种方式:使用ref绑定(配置在生命周期中)this.$ refs.demo.$on(‘事件名’,方法)Demo refdemo例(2)配置在生命周期中:mounted() {this.$refs.demo.$on(atguigu,this.test) } 若想让自定义事件只能触发一次可以使用once修饰符或once方法 触发事件 触发自定义事件 this. $emit(事件名,数据) 解绑事件 解绑自定义事件 this. $off(事件名) 绑定原生事件 组件上也可以绑定原生事件 需要使用native修饰符 如 click.nativeshow 上面绑定自定义事件即使绑定的是原生事件也会被人为是自定义的需要加native,加了后就将此事件给组件的根元素 注意 通过this.r e f s . x x x . refs.xxx.refs.xxx.on(‘事件名’,回调函数) 绑定自定义事件时回调函数要么配置在methods中要么用箭头函数 否则this指向会出问题 src/App.vue templatediv classapph1{{msg}}学生姓名是:{{studentName}}/h1!-- 通过父组件给子组件传递函数类型的props实现子给父传递数据 --School :getSchoolNamegetSchoolName/!-- 通过父组件给子组件绑定一个自定义事件实现子给父传递数据第一种写法使用或v-on --!-- Student atguigugetStudentName demom1/ --!-- 通过父组件给子组件绑定一个自定义事件实现子给父传递数据第二种写法使用ref --Student refstudent click.nativeshow//div /templatescriptimport Student from ./components/Studentimport School from ./components/Schoolexport default {name:App,components:{School,Student},data() {return {msg:你好啊,studentName:}},methods: {getSchoolName(name){console.log(App收到了学校名,name)},getStudentName(name,...params){console.log(App收到了学生名,name,params)this.studentName name},m1(){console.log(demo事件被触发了)},show(){alert(123)}},mounted() {//绑定自定义事件this.$refs.student.$on(atguigu,this.getStudentName)//绑定自定义事件一次性this.$refs.student.$once(atguigu,this.getStudentName) },} /scriptstyle scoped//样式.app{background-color: gray;padding: 5px;} /stylesrc/components/Student.vue templatediv classstudenth2学生姓名{{name}}/h2h2学生性别{{sex}}/h2h2当前求和为{{number}}/h2button clickadd点我number/buttonbutton clicksendStudentlName把学生名给App/buttonbutton clickunbind解绑atguigu事件/buttonbutton clickdeath销毁当前Student组件的实例(vc)/button/div /templatescriptexport default {name:Student,data() {return {name:张三,sex:男,number:0}},methods: {add(){console.log(add回调被调用了)this.number},sendStudentlName(){//触发Student组件实例身上的atguigu事件this.$emit(atguigu,this.name,666,888,900)// this.$emit(demo)// this.$emit(click)},unbind(){this.$off(atguigu) //解绑一个自定义事件// this.$off([atguigu,demo]) //解绑多个自定义事件// this.$off() //解绑所有的自定义事件},death(){this.$destroy() //销毁了当前Student组件的实例销毁后所有Student实例的自定义事件全都不奏效。}},} /scriptstyle langless scoped.student{background-color: pink;padding: 5px;margin-top: 30px;} /stylesrc/components/School.vue templatediv classschoolh2学校名称{{name}}/h2h2学校地址{{address}}/h2button clicksendSchoolName把学校名给App/button/div /templatescriptexport default {name:School,props:[getSchoolName],data() {return {name:尚硅谷,address:北京,}},methods: {sendSchoolName(){this.getSchoolName(this.name)}},} /scriptstyle scoped.school{background-color: skyblue;padding: 5px;} /style使用自定义事件优化Todo-List src/App.vue templatediv idrootdiv classtodo-containerdiv classtodo-wrapMyHeader addTodoaddTodo/MyList :todostodos :checkTodocheckTodo :deleteTododeleteTodo/MyFooter :todostodos checkAllTodocheckAllTodo clearAllTodoclearAllTodo//div/div/div /templatescriptimport MyHeader from ./components/MyHeaderimport MyList from ./components/MyListimport MyFooter from ./components/MyFooter.vueexport default {name:App,components:{MyHeader,MyList,MyFooter},data() {return {//由于todos是MyHeader组件和MyFooter组件都在使用所以放在App中状态提升todos:JSON.parse(localStorage.getItem(todos)) || []}},methods: {//添加一个todoaddTodo(todoObj){this.todos.unshift(todoObj)},//勾选or取消勾选一个todocheckTodo(id){this.todos.forEach((todo){if(todo.id id) todo.done !todo.done})},//删除一个tododeleteTodo(id){this.todos this.todos.filter( todo todo.id ! id )},//全选or取消全选checkAllTodo(done){this.todos.forEach((todo){todo.done done})},//清除所有已经完成的todoclearAllTodo(){this.todos this.todos.filter((todo){return !todo.done})}},watch: {todos:{deep:true,handler(value){localStorage.setItem(todos,JSON.stringify(value))}}},} /scriptstyle/*base*/body {background: #fff;}.btn {display: inline-block;padding: 4px 12px;margin-bottom: 0;font-size: 14px;line-height: 20px;text-align: center;vertical-align: middle;cursor: pointer;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);border-radius: 4px;}.btn-danger {color: #fff;background-color: #da4f49;border: 1px solid #bd362f;}.btn-danger:hover {color: #fff;background-color: #bd362f;}.btn:focus {outline: none;}.todo-container {width: 600px;margin: 0 auto;}.todo-container .todo-wrap {padding: 10px;border: 1px solid #ddd;border-radius: 5px;} /stylesrc/components/MyHeader.vue templatediv classtodo-headerinput typetext placeholder请输入你的任务名称按回车键确认 v-modeltitle keyup.enteradd//div /templatescriptimport {nanoid} from nanoidexport default {name:MyHeader,data() {return {//收集用户输入的titletitle:}},methods: {add(){//校验数据if(!this.title.trim()) return alert(输入不能为空)//将用户的输入包装成一个todo对象const todoObj {id:nanoid(),title:this.title,done:false}//通知App组件去添加一个todo对象this.$emit(addTodo,todoObj,1,2,3)//清空输入this.title }},} /scriptstyle scoped/*header*/.todo-header input {width: 560px;height: 28px;font-size: 14px;border: 1px solid #ccc;border-radius: 4px;padding: 4px 7px;}.todo-header input:focus {outline: none;border-color: rgba(82, 168, 236, 0.8);box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);} /stylesrc/components/MyFooter.vue templatediv classtodo-footer v-showtotallabel!-- input typecheckbox :checkedisAll changecheckAll/ --input typecheckbox v-modelisAll//labelspanspan已完成{{doneTotal}}/span / 全部{{total}}/spanbutton classbtn btn-danger clickclearAll清除已完成任务/button/div /templatescriptexport default {name:MyFooter,props:[todos],computed: {//总数total(){return this.todos.length},//已完成数doneTotal(){//此处使用reduce方法做条件统计/* const x this.todos.reduce((pre,current){console.log(,pre,current)return pre (current.done ? 1 : 0)},0) *///简写return this.todos.reduce((pre,todo) pre (todo.done ? 1 : 0) ,0)},//控制全选框isAll:{//全选框是否勾选get(){return this.doneTotal this.total this.total 0},//isAll被修改时set被调用set(value){// this.checkAllTodo(value)this.$emit(checkAllTodo,value)}}},methods: {/* checkAll(e){this.checkAllTodo(e.target.checked)} *///清空所有已完成clearAll(){// this.clearAllTodo()this.$emit(clearAllTodo)}},} /scriptstyle scoped/*footer*/.todo-footer {height: 40px;line-height: 40px;padding-left: 6px;margin-top: 5px;}.todo-footer label {display: inline-block;margin-right: 20px;cursor: pointer;}.todo-footer label input {position: relative;top: -1px;vertical-align: middle;margin-right: 5px;}.todo-footer button {float: right;margin-top: 5px;} /style使用自定义事件优化Todo-List src/App.vue templatediv idrootdiv classtodo-containerdiv classtodo-wrapMyHeader addTodoaddTodo/MyList :todostodos :checkTodocheckTodo :deleteTododeleteTodo/MyFooter :todostodos checkAllTodocheckAllTodo clearAllTodoclearAllTodo//div/div/div /templatescriptimport MyHeader from ./components/MyHeaderimport MyList from ./components/MyListimport MyFooter from ./components/MyFooter.vueexport default {name:App,components:{MyHeader,MyList,MyFooter},data() {return {//由于todos是MyHeader组件和MyFooter组件都在使用所以放在App中状态提升todos:JSON.parse(localStorage.getItem(todos)) || []}},methods: {//添加一个todoaddTodo(todoObj){this.todos.unshift(todoObj)},//勾选or取消勾选一个todocheckTodo(id){this.todos.forEach((todo){if(todo.id id) todo.done !todo.done})},//删除一个tododeleteTodo(id){this.todos this.todos.filter( todo todo.id ! id )},//全选or取消全选checkAllTodo(done){this.todos.forEach((todo){todo.done done})},//清除所有已经完成的todoclearAllTodo(){this.todos this.todos.filter((todo){return !todo.done})}},watch: {todos:{deep:true,handler(value){localStorage.setItem(todos,JSON.stringify(value))}}},} /scriptstyle/*base*/body {background: #fff;}.btn {display: inline-block;padding: 4px 12px;margin-bottom: 0;font-size: 14px;line-height: 20px;text-align: center;vertical-align: middle;cursor: pointer;box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);border-radius: 4px;}.btn-danger {color: #fff;background-color: #da4f49;border: 1px solid #bd362f;}.btn-danger:hover {color: #fff;background-color: #bd362f;}.btn:focus {outline: none;}.todo-container {width: 600px;margin: 0 auto;}.todo-container .todo-wrap {padding: 10px;border: 1px solid #ddd;border-radius: 5px;} /stylesrc/components/MyHeader.vue templatediv classtodo-headerinput typetext placeholder请输入你的任务名称按回车键确认 v-modeltitle keyup.enteradd//div /templatescriptimport {nanoid} from nanoidexport default {name:MyHeader,data() {return {//收集用户输入的titletitle:}},methods: {add(){//校验数据if(!this.title.trim()) return alert(输入不能为空)//将用户的输入包装成一个todo对象const todoObj {id:nanoid(),title:this.title,done:false}//通知App组件去添加一个todo对象this.$emit(addTodo,todoObj,1,2,3)//清空输入this.title }},} /scriptstyle scoped/*header*/.todo-header input {width: 560px;height: 28px;font-size: 14px;border: 1px solid #ccc;border-radius: 4px;padding: 4px 7px;}.todo-header input:focus {outline: none;border-color: rgba(82, 168, 236, 0.8);box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);} /stylesrc/components/MyFootertemplatediv classtodo-footer v-showtotallabel!-- input typecheckbox :checkedisAll changecheckAll/ --input typecheckbox v-modelisAll//labelspanspan已完成{{doneTotal}}/span / 全部{{total}}/spanbutton classbtn btn-danger clickclearAll清除已完成任务/button/div /templatescriptexport default {name:MyFooter,props:[todos],computed: {//总数total(){return this.todos.length},//已完成数doneTotal(){//此处使用reduce方法做条件统计/* const x this.todos.reduce((pre,current){console.log(,pre,current)return pre (current.done ? 1 : 0)},0) *///简写return this.todos.reduce((pre,todo) pre (todo.done ? 1 : 0) ,0)},//控制全选框isAll:{//全选框是否勾选get(){return this.doneTotal this.total this.total 0},//isAll被修改时set被调用set(value){// this.checkAllTodo(value)this.$emit(checkAllTodo,value)}}},methods: {/* checkAll(e){this.checkAllTodo(e.target.checked)} *///清空所有已完成clearAll(){// this.clearAllTodo()this.$emit(clearAllTodo)}},} /scriptstyle scoped/*footer*/.todo-footer {height: 40px;line-height: 40px;padding-left: 6px;margin-top: 5px;}.todo-footer label {display: inline-block;margin-right: 20px;cursor: pointer;}.todo-footer label input {position: relative;top: -1px;vertical-align: middle;margin-right: 5px;}.todo-footer button {float: right;margin-top: 5px;} /style

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无锡哪里有建设网站建设一个视频教学网站

当我们有了一台属于自己的服务器的时候,想远程桌面连接到服务器,怎么连接呢,下面来分享一下方法! 准备工作:服务器(服务器ip,端口,账号密码) 个人电脑 第一步在我们的电脑上面按winR键打开运行&#xff0…

网站的网络设计公司android studio下载官网

目录 方法一&#xff1a;同源使用标签下载图片 方法二&#xff1a;跨域使用将canvas上的内容转换为Blob对象并下载 在前端开发中&#xff0c;有时候我们需要实现点击图片后直接下载的功能。本文将介绍两种方法来实现这一功能&#xff1a; 同源使用<a>标签下载图片跨域使…

2025年国家科技奖初评公布(自然科学奖)

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140…

别人做的网站需要提供些什么给我们十大直播禁止下载的软件

题目&#xff1a; 题目背景 OURCE&#xff1a;NOIP2015-SHY-7 题目描述 求一棵带边权的树的一条最大 Xor 路径的值。这里的“路径”不一定从根到叶子结点&#xff0c;中间一段路径只要满足条件也可以。 输入格式 第一行&#xff0c;一个整数 N &#xff0c;表示一颗树有 N 个节…

旅游网站建设风格沈阳建设工程信息网 专家中项网

继续《SAS编程与数据挖掘商业案例》学习笔记系列&#xff0c;本次重点&#xff1a;常用全程语句 所谓全程语句&#xff0c;是指可以用在任何地方的sas语句&#xff0c;既可以用在data数据步语句里面&#xff0c;也可以用在proc过程步里面&#xff0c;甚至可以单独使用&#xff…

广州网站建设(信科分公司)教育机构网站建设加盟

1&#xff0c;实现链表中节点的比较。 在C语言中&#xff0c;链表是一种常见的数据结构&#xff0c;用于存储一系列的数据元素。每个节点包含数据和指向下一个节点的指针。比较两个链表节点的操作取决于具体需求。如果想比较两个节点中的数据&#xff0c;可以写一个函数来实现这…

平板网站开发wordpress 文章别名

问题 时序数据库 IoTDB 如果在数据插入时未指定属性值的类型&#xff0c;而后期需要将原本推断为 INT32 类型的数据强制转换为 TEXT 类型&#xff0c;应如何处理&#xff1f;如果字段类型不支持直接修改&#xff0c;是否有其他方案可以实现字段类型的调整&#xff1f;如何将设…

单位门户网站是什么意思wordpress头像怎么修改

首先SSH是啥&#xff0c;维基一下&#xff1a;Secure Shell&#xff08;安全外壳协议&#xff0c;简称SSH&#xff09;是一种加密的网络传输协议&#xff0c;可在不安全的网络中为网络服务提供安全的传输环境[1]。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接…

短视频seo排名系统网站标题优化技巧

【题目描述】学校进行成绩分级管理&#xff0c;取消分数制&#xff0c;改为成绩分级评定。具体办法是&#xff1a;小于60分为E类&#xff1b;60分至70分&#xff08;不含70分&#xff09;为D类&#xff1b;70分至80分&#xff08;不含&#xff09;为C类&#xff1b;80分至90分&…

手机直接看的网站有哪些做除尘骨架的网站

现象&#xff1a;文件编码格式为 UTF-8 不带签名编码格式&#xff0c;模块索引会出现 模块无法找到异常 更改文件类型为 UTF-8 带签名格式或 vs 默认 GBK2312 编码格式

百度 网站地图怎么做手机上怎么建网站

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之直接插入排序。 1. 直接插入排序&#xff1a; 原理&#xff1a;假设前面的数为有序数列&#xff0c;然后有序数列与无序数列的每个数比较&#xff0c;我们可以从右向左比较 思路&#xff1a;从第2…

建设造价信息网站石家庄网站外包公司

在日常的Web开发中&#xff0c;处理表单数据是一个常见的任务。而XML是一种常用的数据格式&#xff0c;用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式&#xff0c;介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…

JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程

NumPy作为Python数值计算领域的基础框架,凭借其强大的N维数组结构和丰富的函数生态系统,成为科学家、工程师和数据分析师的核心工具。然而,随着计算需求的快速增长,特别是在机器学习和大规模科学模拟领域,NumPy基…

电商平台网站模板想建网站

1、下载jspdf插件包 npm i jspdf2、在utils文件夹下创建一个单独的文件&#xff08;名字无具体要求&#xff09; // 页面导出为pdf格式&#xff0c;title表示为下载的标题&#xff0c;html表示要下载的页面 import html2Canvas from html2canvas // 不用单独去下载这个包&…

linux系统怎么做网站网站seo诊断分析报告

编写程序&#xff0c;实现一个具有开户、查询、取款、存款、转账、锁定、解锁、退出功能的银行管理系统。 结果展示 1.Main主方法 from zzjmxy.class7.atm import ATM from zzjmxy.class7.manager import Manager # 主面板&#xff0c;实现主要逻辑if __name__"__main__…

帝国cms网站迁移下载代码的网站

近年来&#xff0c;燃气爆炸事故频发&#xff0c;造成了重大人员伤亡和财产损失。这也再次为我们敲响警钟&#xff0c;燃气是我们日常生活中不可或缺的能源&#xff0c;但其潜在的危险性也是不容小觑。因此在重要节点加装燃气阀井气体监测仪&#xff0c;并将数据上传到系统平台…

网站首页成品在线直播网站建设

官方glTF模型案例 obj2gltf 的开发文档 第一步&#xff1a;这里首先要将我们的.obj文件转换为.gltf文件 全局安装 npm install -g obj2gltf终端打开.obj文件所在的文件夹执行 obj2gltf -i model.obj -o model.gltf -t &#xff08;-i model.obj对应你的obj文件的名字&#x…

直接进网站的浏览器打开宜春网站开发公司

From: http://hi.baidu.com/david_jlu/blog/item/87ada1dbb9af6a60d0164eda.html 正则表达式在linux下应用非常广泛&#xff0c;经常使用sed、awk、grep、vi、emacs等都支持正则表达式&#xff0c;处理最好的莫过于perl&#xff0c;perl把正则表达式内置到语言内&#xff0c;使…

怎么在服务器里面做网站wordpress 作者推荐

windows7无法启动安装过程怎么办&#xff1f;暗黄win7系统的时候经常遇见这种问题可能是硬件问题导致的&#xff0c;还有可能是系统设置问题导致的&#xff0c;我们具体原因具体分析&#xff0c;一起来看看解决方法&#xff0c;动手实践起来吧&#xff01;1、方法一&#xff1a…

广西建设厅招投标中心网站wordpress可以制作什么网站

大家好&#xff0c;我是奇兵。 文章比较长&#xff0c;请耐心看完&#xff01; 项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了&#xff0c;今天再出一期微服务项目的部署教程&#xff0c;用一种最简单的方法&#xff0c;带…