vue a-sub-menu 添加点击事件报错_Vue+TS 使用的问题(持续更)
[TOC]
引入问题
- 引入
.vue
问题带来的问题
在项目目录下添加vue-shims.d.ts
文件, 文件内容为
declare module '*.vue' {import Vue from 'vue';export default Vue
}
- 在兄弟组件之间传值的时候会引入一个引导者, 这时候就需要引入一个
.vue
文件, 例如
import { eventBus } from "../main.ts";
编译期间可能会报以下错误, 但是浏览器会正常运行
An import path cannot end with a '.ts' extension. Consider importing '../main' instead
导入路径不能以“.ts”扩展名结尾。请考虑导入'../main'
当我们改成这种情况, 编译期间不会报错, 可是浏览器报错, 这就让人很头疼
import { eventBus } from "../main";
解决办法: 在webpack.config.js
中添加 扩展名
resolve: {extensions: ['.js', '.ts', '.vue', '.json']
}
引入文件格式如下
import { eventBus } from "../main";
组件之间通信
父传子
父组件给子组件传递'属性', 子组件使用prop
接收
父组件
<template><xm-son parentName="父组件的name"></xm-son>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import xmSon from 'xmson路径' // 引入子组件@Component({// 挂载子组件components: {xmSon}
})
</script>
子组件
<template><p>{{ sonName }}</p>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";@Component
export default class Son extend Vue {@Prop() parentName!: string // 接收父组件的参数sonName: string = this.parentName
}
</script>
子传父
子组件通过事件给父组件发送消息($emit)
父组件
<template><xm-son @sonMsg="bindSonMsg"></xm-son>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import xmSon from 'xmson路径' // 引入子组件@Component({// 挂载子组件components: {xmSon}
})export default class Son extend Vue {msg!: stringbindSonMsg(msg: string){// 实现代码逻辑this.msg = msg}}
</script>
子组件
<template><p>{{ sonName }}</p><!-- 点击按钮触发 sendToParent 函数 --><button @click="sendToParent">向父组件发出信息</button>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";@Component
export default class Son extend Vue {msg: string = '来自: 子组件的消息'// sonMsg 为父组件引用子组件上的 绑定的事件名称// 也就是说 父组件需要在 子组件标签上 绑定 sonMsg 事件// @sonMsg="待实现的函数"@Emit('sonMsg')sendToParent(){ // 实现 sendToParent函数return this.msg}
}
</script>
兄弟组件之间的传值
一般来说, 子组件之间是无法直接交流的, 这是因为 Vue 中的数据通信都是单向的, 也就是说 数据只会从父流向子或者反过来, 无法在子组件直接通信
父组件给出一些可执行方法(父通过prop
下发起 callback 的函数给子)它们是prop
提供的, 而在执行这些方法时, 数据就会被传回父组件(子组件使用 callback 函数回传数据), 或者可以通过自定义事件来将数据发回监听这个事件的父组件, 最后父组件就可以将更新过后的数据传递给其他子组件
我们也可以创建一个通道来实现兄弟之间的通信
main.ts
// 一定! 必须! 在 Vue 实例之前创建 连接通道
export const eventBus = new Vue()new Vue({render: h => h(App),
}).$mount('#app')
Son1.vue
<template><p>Server id: #{{ server.id }} Status: {{ server.status }}</p>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import { eventBus } from '../../main';@Component
export default class ServerDetails extends Vue {server: object[]created() {// 给通道上 绑定一个事件eventBus.$on('serverSelected', (server) => {this.server = server})}
}</script>
Son2.vue
<template><li @click="serverSelected">Server #{{ server.id }}</li>
</template>
<script lang="ts">
import { Component, Vue, Prop, Emit } from 'vue-property-decorator';
import { eventBus } from '../../main';@Component
export default class ServerItem extends Vue {name: 'Server'@Prop() server!: object[]// 使用自定义事件接受@Emit('serverSelected')serverSelected(){return this.server}
};
</script>
vue a-sub-menu 添加点击事件报错_Vue+TS 使用的问题(持续更)相关推荐
- unity3d C#用匿名委托循环注册按钮点击事件报错:索引超界 ArgumentOutOfRangeException: Index was out of range. Must be non-ne
unity3d C#用匿名委托循环注册按钮点击事件报错:索引超界 ArgumentOutOfRangeException: Index was out of range. Must be non-ne ...
- vue中echarts纵轴添加点击事件
直接上代码 initChart () {this.ganttChart = echarts.init(document.getElementById('gantt-chart'))const _sel ...
- vue项目中出现重复点击路由报错
故心故心故心故心小故冲啊 文章目录 解决方法: 解决方法: 方法1:在项目目录下运行 npm i vue-router@3.0 -S 重新下载未出错版本即可: 方法2:不想更换 vue-router ...
- onclick点击事件报错Uncaught ReferenceError: xxx is not defined
有时候会直接在html中写onclick事件 我认为一般人是不会将onclick写错的,简单写一个例子,就是οnclick="方法名" <div onclick=" ...
- vue使用高德地图为信息窗体再添加点击事件
即使是用的vue,也不能使用@click为窗体添加点击事件,需要使用onclick,并且在定义了函数后,使用该函数还是会报函数未定义的错误,需要在window下添加该函数,点击时可以在原型链中找到该函 ...
- Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理
Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 目录 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事 ...
- 如何给Vue v-for循环渲染出的元素(导航栏) 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换
如何给Vue v-for循环渲染出的元素 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换 能够实现或解决的问题 给Vue v-for循环出的元素批量添加点击事件,并以自己在数组中 ...
- vue组件-echarts地图显示柱状图并给柱状图添加点击事件(支持自定义地图)
vue组件-echarts地图显示柱状图并给柱状图添加点击事件(支持自定义地图) 效果如下所示: 参考文档: 这是参考的文档 起因: 最近有朋友有需求需要用echarts,在地图上显示柱状图,并添加点 ...
- 高德地图单点、多点标记,轨迹绘制,自定义标记覆盖物,给标记添加点击事件,移除所有标记和轨迹,轨迹回放功能
文档地址 https://lbs.amap.com/api/javascript-api/guide/abc/prepare 注册 到官网注册一下就可以了https://lbs.amap.com/并创 ...
最新文章
- 最简单的nagios监控内存插件(shell)
- CVPR2016:Improving Person Re-identification via Pose-aware Multi-shot Matching
- 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评
- 一个大型虚拟项目包含位于不同地点的许多干系人_项目管理与人生
- Codeforces Round #658 (Div. 2)
- C语言库函数的哈希表使用方法
- 用聚宽量化炒股-5获取数据函数-6)获取指数成分股代码函数get_index_stocks
- 注意JDBC数据库连接中资源关闭的顺序
- 使用xcelsius创建令人惊叹的幻灯片 --xcelsius入门
- 计算机黑屏的原因及解决办法,电脑突然黑屏重启的原因及解决办法
- 电脑读卡器,读卡器是什么
- Asciidoctor基础语法
- 通过基因组选择预测杂交水稻的表现(数据挖掘)
- 算法题解——将字符串转化为ip地址
- python中如何将数字转换成中文数字_Python把数字变成中文的方法
- C++:实现一些简单的方法来 布莱克-斯科尔斯期权估值理论(附完整源码)
- 美国大学计算机课程教材,美国大学计算机基础教学课程结构一瞥.pdf
- 最精确的手机电量校正方法,完全恢复电量,提高使用时间
- CSDN互联网大数据应用主题月-CSDN公开课-专题视频课程
- 2022最新SpringCloud Alibaba入门到精通超详细版文档,教你从0到1搭建一个微服务项目
热门文章
- Angular Component 的 renderer 创建机制以及 Angular 版本号的确定方式
- rxjs 里的pipe operator
- ABAP内表在ABAP 740后支持的filter操作
- 如何在Eclipse自带的嵌入式Maven和外部安装的Maven之间切换
- 使用代码获得Social Media Channel绑定的service url
- SAP CRM WebClient UI交互式报表的Gross Value工作原理
- 如何查询SAP Cloud for Customer系统升级和维护时间
- SAP CRM One Order status drop down list generation
- How is Component.js loaded - backend processing
- SAP Fiori国际化支持之UI5 RTL support的实现原理