【问题标题】:get access to a module class by its name in Vue using vue-property-decorator使用 vue-property-decorator 在 Vue 中通过其名称访问模块类
【发布时间】:2020-12-13 11:36:27
【问题描述】:

当我们使用 vue-property-decorator 并通过以下方式定义模块时:

export default class ModuleName extends Vue {
   ...
}

并在应用程序中嵌入多个模块我们可以通过寻址模块的名称来访问这些模块中的特定模块吗? 我的意思是考虑到这些方案,我可以从 Module_A 调用和运行属于 Module_C 的函数吗?

... base
     |
     .... Module_A
     |
     .... Module_B
            |
            .... Module_C

我的意思是这样的:

在 Module_A 中:Vue.Module_C.someFunctionBelongsToModuleC();

附言我完全了解总线技术,$emit,$parent,... 我想知道 ModuleName 本身在这里是否有任何优点?

【问题讨论】:

    标签: vue.js vue-property-decorator


    【解决方案1】:

    我假设当您说“模块”时,您指的是 Vue 中的组件。由于对组件使用类语法会导致这些组件成为对象实例,因此您可以使用 refs 访问任何成员,包括函数。因此,Module_A 可以调用 Module_B 上的函数,而 Module_B 调用 Module_C 上的函数。要从 Module_A 访问 Module_C 的成员,Module_B 需要通过自己的成员公开这些成员。

    也就是说,这不是一个好主意:)。尽可能将道具传递给链条。

    【讨论】:

    • 感谢您的解释,是的,我的意思是按模块的组件,让我们再清楚一点,以这个为例:我有多框架应用程序,我想通过按 A 中的按钮,调用 @987654323 @ 在 C 中!我在问那个 ModuleName 是否派上用场?我的意思是我可以使用这个名字作为捷径,并且帮助我不要传递道具,而当应用程序变得非常大时,传递道具将不是一个明智的选择,使用总线技术将是合理的选择,但我是询问export default class ModuleName 是否可以用作快捷方式?
    • 如果您发现需要直接从 A 控制 C,我知道的最好方法是通过插槽将 C 从 A 传递到 B。然后 A 可以获得对 C 的引用并调用函数。
    • 正如你所说的我们可以使用引用,所以我问是否有任何其他方法可以通过它的名称访问组件而不是链接引用。
    • Vue 实例上有 $children 属性,你可以尝试遍历它。 vuejs.org/v2/api/#vm-children
    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2021-10-11
    • 2019-12-17
    • 2020-09-15
    • 2019-05-19
    • 2019-12-05
    相关资源
    最近更新 更多