当前位置: 首页 > 知识库问答 >
问题:

如何使用Typescript Vue组件对外公开数据?

谢俊悟
2023-03-14

在将typescript与单文件组件一起使用时,我很难从Vue应用程序外部调整数据。

我有一个声明了新Vue的Main.ts,但是将其分配给一个变量并不能给我该变量可用。所以var x=new Vue(){...}在Main.ts不工作

我尝试在我的中公开变量。vuefile,我知道我可以用app选择元素__vue_但它没有在中声明的变量。vue文件,仅当我在main中初始化变量时。ts文件,我看到了它们,但组件模板无法呈现它们。

主要的ts:

import Vue from 'vue';
import App from './App.vue';

Vue.config.productionTip = false;

new Vue({
  render: (h) => h(App),
}).$mount('#app');

应用程序。vue脚本:

export default class App extends Vue {
  search: string = "";
}

当我看到JavaScript实现时,我可以从控制台通过调用绑定到Vue应用程序的th变量来调整属性,比如var x=new Vue(){…} 但我似乎无法在打字脚本中实现这一点


共有2个答案

吴子昂
2023-03-14

这是我想出的最终解决方案:

let instance = new Vue({
  render: (h) => h(App)
}).$mount('#app');

(<any>window).vueInstance = instance.$children[0];

现在我可以使用vue实例访问我的组件。

濮赤岩
2023-03-14

Typescript是JavaScript的超集。这意味着它只会增加,而不会从中移除。在JavaScript中可以执行的任何操作都可以在Typescript中执行。

也就是说,如果希望以全局方式访问Vue实例,只需将其分配给窗口:

(window as Window).Vue = new Vue({ 
  render: (h) => h(App),
}).$mount('#app');

^您可能必须根据您的设置在TypeScript不爆炸中垫片。

此外,在执行文件的范围之外,用var声明的变量本身并不可用。这样做是为了不污染全球环境。如果您确实需要访问它,还可以从文件中导出它并将其导入其他地方。

 类似资料:
  • 我有对所有用户开放的云功能,我想授权这些功能的任何使用。 我的情况是,我希望其他公司访问我的应用编程接口,但不要访问我没有添加的任何其他用户。 谷歌的文档对我的具体案例没有帮助。 这样做的正确方法是为公司创建一个服务帐户来调用APIendpoint吗? 或者我应该创建一个JWT令牌并以某种方式验证它吗?链接 还是需要创建云endpoint网关? OAuth 2不适合,因为我无法显示同意屏幕,因为它

  • 问题内容: 使用Play Framework,我通过GSON序列化了模型。我指定哪些字段是公开的,哪些不是。 这很好用,但我也想使用@expose方法。当然,这太简单了。 我该怎么做 ? 谢谢你的帮助 ! 问题答案: 我遇到的最好的解决方案是制作一个专用的序列化器: 并在我看来像这样使用它: 但是为某个方法工作会很棒:它将避免使序列化器仅用于显示方法!

  • 问题内容: 我有一个代表IFrame的原型。该原型具有一个名为GoToUrl(…)的函数,可在IFrame中打开给定的url。 我的问题是:如何创建“ InternalDOM”属性并使该属性引用内部IFrame的“窗口”对象(根DOM对象)?通过以下方式:如果我的IFrame公开了一个在其“窗口”对象中包含对象X的页面,我可以这样做: 任何帮助,将不胜感激。 PS:我会接受不一定与jQuery相关

  • 我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错

  • 我想更改我的机器人所在的特定公会的图标。为此,我需要使用方法。我已经有了公会的ID,但我不知道如何把它变成我可以使用的对象。 常量作为字符串存储在config中。json。 这是我的index.js,我试图运行代码。 我得到的错误是

  • 我正在尝试将bootstrap-daterangepicker与WebPack一起使用。在我的视图文件中,我有以下内容: 在中: