[TOC]

引入问题

  1. 引入.vue问题带来的问题

在项目目录下添加vue-shims.d.ts文件, 文件内容为

declare module '*.vue' {import Vue from 'vue';export default Vue
}

  1. 在兄弟组件之间传值的时候会引入一个引导者, 这时候就需要引入一个.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 使用的问题(持续更)相关推荐

  1. unity3d C#用匿名委托循环注册按钮点击事件报错:索引超界 ArgumentOutOfRangeException: Index was out of range. Must be non-ne

    unity3d C#用匿名委托循环注册按钮点击事件报错:索引超界 ArgumentOutOfRangeException: Index was out of range. Must be non-ne ...

  2. vue中echarts纵轴添加点击事件

    直接上代码 initChart () {this.ganttChart = echarts.init(document.getElementById('gantt-chart'))const _sel ...

  3. vue项目中出现重复点击路由报错

    故心故心故心故心小故冲啊 文章目录 解决方法: 解决方法: 方法1:在项目目录下运行 npm i vue-router@3.0 -S 重新下载未出错版本即可: 方法2:不想更换 vue-router ...

  4. onclick点击事件报错Uncaught ReferenceError: xxx is not defined

    有时候会直接在html中写onclick事件 我认为一般人是不会将onclick写错的,简单写一个例子,就是οnclick="方法名" <div onclick=" ...

  5. vue使用高德地图为信息窗体再添加点击事件

    即使是用的vue,也不能使用@click为窗体添加点击事件,需要使用onclick,并且在定义了函数后,使用该函数还是会报函数未定义的错误,需要在window下添加该函数,点击时可以在原型链中找到该函 ...

  6. Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理

    Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事件的简单整理 目录 Vue 之 vue-seamless-scroll 实现简单自动无缝滚动,且添加对应点击事 ...

  7. 如何给Vue v-for循环渲染出的元素(导航栏) 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换

    如何给Vue v-for循环渲染出的元素 批量添加点击事件 及 点击后添加css类样式 及 点击后路由跳转切换 能够实现或解决的问题 给Vue v-for循环出的元素批量添加点击事件,并以自己在数组中 ...

  8. vue组件-echarts地图显示柱状图并给柱状图添加点击事件(支持自定义地图)

    vue组件-echarts地图显示柱状图并给柱状图添加点击事件(支持自定义地图) 效果如下所示: 参考文档: 这是参考的文档 起因: 最近有朋友有需求需要用echarts,在地图上显示柱状图,并添加点 ...

  9. 高德地图单点、多点标记,轨迹绘制,自定义标记覆盖物,给标记添加点击事件,移除所有标记和轨迹,轨迹回放功能

    文档地址 https://lbs.amap.com/api/javascript-api/guide/abc/prepare 注册 到官网注册一下就可以了https://lbs.amap.com/并创 ...

最新文章

  1. 最简单的nagios监控内存插件(shell)
  2. CVPR2016:Improving Person Re-identification via Pose-aware Multi-shot Matching
  3. 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评
  4. 一个大型虚拟项目包含位于不同地点的许多干系人_项目管理与人生
  5. Codeforces Round #658 (Div. 2)
  6. C语言库函数的哈希表使用方法
  7. 用聚宽量化炒股-5获取数据函数-6)获取指数成分股代码函数get_index_stocks
  8. 注意JDBC数据库连接中资源关闭的顺序
  9. 使用xcelsius创建令人惊叹的幻灯片 --xcelsius入门
  10. 计算机黑屏的原因及解决办法,电脑突然黑屏重启的原因及解决办法
  11. 电脑读卡器,读卡器是什么
  12. Asciidoctor基础语法
  13. 通过基因组选择预测杂交水稻的表现(数据挖掘)
  14. 算法题解——将字符串转化为ip地址
  15. python中如何将数字转换成中文数字_Python把数字变成中文的方法
  16. C++:实现一些简单的方法来 布莱克-斯科尔斯期权估值理论(附完整源码)
  17. 美国大学计算机课程教材,美国大学计算机基础教学课程结构一瞥.pdf
  18. 最精确的手机电量校正方法,完全恢复电量,提高使用时间
  19. CSDN互联网大数据应用主题月-CSDN公开课-专题视频课程
  20. 2022最新SpringCloud Alibaba入门到精通超详细版文档,教你从0到1搭建一个微服务项目

热门文章

  1. Angular Component 的 renderer 创建机制以及 Angular 版本号的确定方式
  2. rxjs 里的pipe operator
  3. ABAP内表在ABAP 740后支持的filter操作
  4. 如何在Eclipse自带的嵌入式Maven和外部安装的Maven之间切换
  5. 使用代码获得Social Media Channel绑定的service url
  6. SAP CRM WebClient UI交互式报表的Gross Value工作原理
  7. 如何查询SAP Cloud for Customer系统升级和维护时间
  8. SAP CRM One Order status drop down list generation
  9. How is Component.js loaded - backend processing
  10. SAP Fiori国际化支持之UI5 RTL support的实现原理