创建自定义插件Vuejs + Typescript时出错

皮耶罗·帕哈雷斯(Piero Pajares)

我的索引和服务插件具有以下结构:

在此处输入图片说明

服务

declare interface Params {
  title: string;
  description?: string;
  type?: string;
  duration?: number;
}

export default class ServiceToast {
  public toastRef: any; // component

  public constructor(modalRef: any) {
    this.toastRef = modalRef;
    console.log(this.toastRef);
  }

  public open(params: Params) {
    this.toastRef.open(params);
  }
}

基本上,我已经创建了一个接收组件的服务,以便它可以轻松地与组件交互。

index.ts:

import _Vue from 'vue';
import Toast from '@/components/_includes/layouts/Toast.vue';
import ServiceToast from './service';

const ToastPlugin = {
  install: (Vue: typeof _Vue, options?: any) => {
    Vue.mixin({
      created() {
        Vue.prototype.$toast = new ServiceToast(Toast);
      },
    });
  },
};

export default ToastPlugin;

我在哪里安装插件并使用上面显示的服务。

在此处输入图片说明

在这里,我称该插件为对应的Vue.use,但是当我想在任何组件中调用它时:

<a @click="$toast.open({ title: 'Hola mundo' })">Hola, dame click!</a>

我收到以下错误:“ TypeError:this.toastRef.open不是函数”

在el shims-vue-plugin.d.ts中:

/* eslint-disable */
import Vue from 'vue';
import { AxiosInstance } from 'axios';
import 'webpack-env';
import { FieldFlagsBag } from 'vee-validate';
import { SnackbarProgrammatic as Snackbar, DialogProgrammatic as Dialog } from 'buefy';
import ServiceToast from './app-config/toast/service';

declare module 'vue/types/vue' {
  interface Vue {
    $auth: any;
    $axios: AxiosInstance;
    veeFields: FieldFlagsBag;
    $dialog: typeof Dialog;
    $snackbar: typeof Snackbar;
    $toast: ServiceToast;
  }
}


declare namespace NodeJS {
  interface Process extends __WebpackModuleApi.NodeProcess {
    server: boolean;
  }
}

有谁知道这可能是什么?或由于找不到错误而丢失:/

this.$toast在任何组件中都不会成为的实例Toast.vue这是出口。要拥有一个实际的实例,您需要$mount()

import _Vue from 'vue'; 

// create a class
const ToastClass = _Vue.extend(this.$toast.toastRef);

// get an instance of the class
const instance = new ToastClass();

// mount it
instance.$mount();
// now you have an instance, so you can call any of its methods, i.e: 
// instance.open();
// but it's not yet appended to DOM. to append it to the current component:

this.$el.appendChild(instance.$el);

我不知道您要达到什么目的,但是乍看之下,在应用程序的每个组件中都有一个组件实例似乎不是一个好主意。每个Toast实例也将有一个this.$toast吐司酒:)

您最好在其中添加一系列吐司,$store并在应用程序的根元素上附加一个容器,并添加一个普通的

<toast v-for="toast in toasts" />

当烤面包过期时,提交并从状态中删除。
当您想添加另一个时,只需推送一个新的即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建自定义变量时出错

来自分类Dev

在安装时使用自定义顺序创建自定义插件joomla

来自分类Dev

在Grails中创建自定义标签库时出错

来自分类Dev

在自定义UINavigationController类中创建UINavigationBar时出错

来自分类Dev

创建自定义seaborn颜色图时出错

来自分类Dev

尝试创建/更新自定义表单时出错

来自分类Dev

创建 SharePoint 自定义页面布局 2016 时出错

来自分类Dev

在 tensorflow 中创建自定义层时出错

来自分类Dev

找不到插件,在Xcode中构建自定义插件时出错

来自分类Dev

在 Magento 1.9 中为自定义模块创建自定义表时出错

来自分类Dev

激活wp插件时无法创建多个自定义数据库表

来自分类Dev

在开发WordPress插件时创建自定义数据库表的最佳选择是什么?

来自分类Dev

在 WebStorm 中创建新项目时不会出现自定义插件模块

来自分类Dev

加载自定义UserControl时出错

来自分类Dev

在Postgres上运行自定义插件时出错,“输出插件必须声明_PG_output_plugin_init符号”

来自分类Dev

创建自定义UITableViewCell时崩溃

来自分类Dev

添加自定义的新@NameQuery时创建EntityManager时出错

来自分类Dev

创建自定义地形编辑器(Unity C#)时出错

来自分类Dev

使用自定义分析器在Elasticsearch上创建索引时出错

来自分类Dev

Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

来自分类Dev

安装推送插件时,我的自定义Cordova插件被杀死的即时贴通知

来自分类Dev

将自定义选项传递给radarChartJS时出错

来自分类Dev

膨胀自定义按钮类时出错。NoSuchMethodException

来自分类Dev

编译用于增强精神的自定义容器时出错

来自分类Dev

CodeIgniter:加载自定义库时出错

来自分类Dev

在自定义管道中使用内置管道时出错

来自分类Dev

编译自定义OpenDaylight API时出错

来自分类Dev

在Hyperledger Fabric中启动自定义网络时出错

来自分类Dev

使用休眠搜索自定义桥时出错

Related 相关文章

  1. 1

    创建自定义变量时出错

  2. 2

    在安装时使用自定义顺序创建自定义插件joomla

  3. 3

    在Grails中创建自定义标签库时出错

  4. 4

    在自定义UINavigationController类中创建UINavigationBar时出错

  5. 5

    创建自定义seaborn颜色图时出错

  6. 6

    尝试创建/更新自定义表单时出错

  7. 7

    创建 SharePoint 自定义页面布局 2016 时出错

  8. 8

    在 tensorflow 中创建自定义层时出错

  9. 9

    找不到插件,在Xcode中构建自定义插件时出错

  10. 10

    在 Magento 1.9 中为自定义模块创建自定义表时出错

  11. 11

    激活wp插件时无法创建多个自定义数据库表

  12. 12

    在开发WordPress插件时创建自定义数据库表的最佳选择是什么?

  13. 13

    在 WebStorm 中创建新项目时不会出现自定义插件模块

  14. 14

    加载自定义UserControl时出错

  15. 15

    在Postgres上运行自定义插件时出错,“输出插件必须声明_PG_output_plugin_init符号”

  16. 16

    创建自定义UITableViewCell时崩溃

  17. 17

    添加自定义的新@NameQuery时创建EntityManager时出错

  18. 18

    创建自定义地形编辑器(Unity C#)时出错

  19. 19

    使用自定义分析器在Elasticsearch上创建索引时出错

  20. 20

    Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

  21. 21

    安装推送插件时,我的自定义Cordova插件被杀死的即时贴通知

  22. 22

    将自定义选项传递给radarChartJS时出错

  23. 23

    膨胀自定义按钮类时出错。NoSuchMethodException

  24. 24

    编译用于增强精神的自定义容器时出错

  25. 25

    CodeIgniter:加载自定义库时出错

  26. 26

    在自定义管道中使用内置管道时出错

  27. 27

    编译自定义OpenDaylight API时出错

  28. 28

    在Hyperledger Fabric中启动自定义网络时出错

  29. 29

    使用休眠搜索自定义桥时出错

热门标签

归档