如何从组件 vue 更改主 vuetify 应用程序中的值

Posted

技术标签:

【中文标题】如何从组件 vue 更改主 vuetify 应用程序中的值【英文标题】:How to change value in main vuetify app from component vue 【发布时间】:2020-05-31 04:15:26 【问题描述】:

我有两个 vue 文件,app.vue 和 logincomponent.vue。

我使用 logincomponent.vue 制作登录框的模板,并使用脚本与 go backend 在 wails 中进行通信,代码本身可以工作,但我正在尝试更改 main app.vue 中的值,但我无法让它工作.

问题是: “如何从组件更改主 vue 应用程序中的变量值?”

进口:

    import LoginScreen from "./components/LoginScreen.vue"

变量:

        data: () => (
            drawer: false,
            currentScreenID: 0,
            logged: false

二传手:

sendLogin: function () 
                var self = this;
                if (this.$refs.login_form.validate()) 
                    self.dialog = true;
                    self.loadingCircleLogin = true;
                    self.login_dialog_title = self.login_dialog_logging_title;
                    window.backend.sendLoginToBackend(self.email, self.password, self.remember_email).then(result => 
                        if (result === false) 
                            self.loadingCircleLogin = false;
                            self.loginFailText = true;
                            self.login_dialog_title = self.login_dialog_error_title;
                         else 
                            self.dialog = false;
                            self.currentScreenID = 3;
                        
                    )
                
            ,

【问题讨论】:

main.vue中有sendLogin函数吗? 【参考方案1】:

如果父组件(或主 Vue 实例)的状态可以从子组件更改,简短的回答是 或至少 不应该这样做强>。这是一种反模式,可能会在您的代码中产生错误。

但是你在这里有两个选择。

从子组件发出事件,并从父组件处理它。所以父母有责任用自己的逻辑改变自己的状态。 当您需要从子组件更改主实例的值时,您会发出事件,即使您可以将值传递给发出函数,然后您对主实例进行编程以侦听该事件并做出相应的响应。 更多信息在这里:listening to child component events。

将 Vuex 商店添加到您的应用程序。通过这种方式,您可以抽象出几个组件共有的应用程序状态。因此,您的子组件可以要求商店更改某些状态。 更多信息在这里:Vuex

使用 Vuex 比较复杂,如果你的应用很简单,我会选择第一个选项。

【讨论】:

我刚刚使用事件解决了这个问题,我创建了事件并在完成登录后发出,感谢您的帮助

以上是关于如何从组件 vue 更改主 vuetify 应用程序中的值的主要内容,如果未能解决你的问题,请参考以下文章

在Vuetify和Vue JS中将道具传递给父母

如何在独立/CDN 模式下更改 Vuetify 中的主题颜色?

使用 Vuetify Switch 更改 Vuex 状态

如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?

如何在 Vuetify 组件上应用自定义/覆盖 CSS?

如何将 Vuetify 注入我的自定义 vue 插件