首页 > 解决方案 > 有没有办法在侧抽屉中安装功能?

问题描述

我正在尝试使用安装在抽屉内容.vue 中的函数来调用该函数,但它不起作用。

我尝试了像创建函数这样的普通方法,并在页面加载时调用它。

为了便于理解,我上传了完整的代码。

import Home from "./Home";
    import Browse from "./Browse";
    import Featured from "./Featured";
    import Search from "./Search";
    import Login from "./Login";
    import Settings from "./Settings";
    import * as utils from "~/shared/utils";
    import SelectedPageService from "~/shared/selected-page-service";   
    import * as appSettings from "tns-core-modules/application-settings"; 

    let methods = {
        onNavigationItemTap: (component) => {
            this.$navigateTo(component, {
                clearHistory: true
            });
            utils.closeDrawer();
        },
        feedData: () => {
            obj.userName = appSettings.getString("user_display_name")
            obj.userEmail = appSettings.getString("user_email")
            alert("data feeded")
        },
        logoutUser: () => {
            appSettings.clear();
            appSettings.remove("user_display_name");
            appSettings.remove("user_email");
            if(appSettings.getString("user_email") == null || appSettings.getString("user_email") == ''){
                alert("user email id removed");
            }
            if(appSettings.getString("user_display_name") == null || appSettings.getString("user_display_name") == ''){
                alert("user name removed");
            }
            utils.closeDrawer();
            this.$navigateTo(Login, {
                clearHistory: true
            });                
        }
    }

    let obj = {
        mounted: () => {
            SelectedPageService.getInstance().selectedPage$
                .subscribe((selectedPage) => this.selectedPage = selectedPage);
            methods.feedData();
            alert("data Feeded");
        },
        data: () => {
            return {
                Home: Home,
                Browse: Browse,
                Featured: Featured,
                Search: Search,
                Login: Login,
                Settings: Settings,
                selectedPage: "",
                userName:"",
                userEmail:""
            };
        },
        components: {
            Home,
            Browse,
            Featured,
            Search,
            Login,
            Settings
        },
        methods
    }

    export default {
        methods,
        obj
    }
</script>

feeddata 没有调用,我设置了警报以检查但没有成功。

标签: javascriptvue.jsnativescript

解决方案


好的,所以你必须将方法的声明移到顶部,然后你可以在你的方法中调用 feedData:

let methods = {
    onNavigationItemTap: (component) => {
        this.$navigateTo(component, {
            clearHistory: true
        });
        utils.closeDrawer();
    },
    feedData: () => {
        this.userName = appSettings.getString("user_display_name");
        this.userEmail = appSettings.getString("user_email");
    }
};

let obj = {
    mounted: () => {
        SelectedPageService.getInstance().selectedPage$
            .subscribe((selectedPage) => this.selectedPage = selectedPage);
        methods.feedData();
        alert("datta Feeded");
    },
    data: () => {
        return {
            userName: "",
            userEmail: ""
        };
    },
    methods

};

export default {
    methods,
    obj
}

推荐阅读