uni-app:利用Vue的原型对象Vue.prototype设置全局方法及其引用

一、在main.js中设置方法checkPermission绑定到Vue.prototype

核心代码

javascript 复制代码
Vue.prototype.$checkPermission = function(username) {
  console.log('Checking permission for:', username);
};

完整代码

javascript 复制代码
import App from './App'

// 添加 checkPermission 方法到 Vue.prototype 上,检查权限(这一段是方法的设置)
Vue.prototype.$checkPermission = function(username) {
  console.log('Checking permission for:', username);
};

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    ...App
})

app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif

二、在页面引用全局方法

核心代码

javascript 复制代码
this.$checkPermission(this.username);

完整代码

javascript 复制代码
export default {
    data() {
        return {
            username: 'testuser'
        };
    },
    methods: {
        onLoad() {
            this.$checkPermission(this.username);//调用方法,传递参数username
        }
    }
};

补充:涉及到异步问题

一、main.js(全局方法有请求服务器的操作)

javascript 复制代码
import App from './App'
// 添加 checkPermission 方法到 Vue.prototype 上,检查权限
Vue.prototype.$checkPermission = function(username) {
  return new Promise((resolve, reject) => {
    uni.request({
      url: getApp().globalData.position + 'Xcxuser/checkpermission',
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      method: 'POST',
      dataType: 'json',
      data: {
        username: username,
      },
      success: res => {
        // console.log('Server Response:', res);
        resolve(res);
      },
      fail: err => {
        console.log(err);
        reject(err);
      }
    });
  });
};




// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    ...App
})

app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif

二、userlogin.vue(调用方法)

javascript 复制代码
methods: {
	//权限检查
	async checkUserPermission(username) {
		  try {
			const response = await this.$checkPermission(username);
			console.log('Server Response:', response);
			this.permissionResult = response.data; // 假设服务器返回的数据在response.data中
			this.permissionChecked = true;
		  } catch (error) {
			console.error('Error checking permission:', error);
		  }
	  },
    mounted() {
        // 页面加载时调用权限检查
        this.checkUserPermission('yourUsername');
    }

}
相关推荐
踩着两条虫33 分钟前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
普马萨特2 小时前
uni-app x 定位踩坑实录:H5/小程序/App 统一经纬度与逆地理编码
uni-app
高级程序源2 小时前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计
溪语流沙2 小时前
【Web全栈进阶】前端世界观:现代工具链与框架为什么存在
前端·javascript·vue.js
WeiXin_DZbishe4 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
高级程序源4 小时前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计
高级程序源4 小时前
springboot社区旧物回收管理系统25381-计算机课程设计、毕业设计
vue.js·spring boot·python·django·课程设计
高级程序源4 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
WeiXin_DZbishe4 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
风早爽太5 小时前
Mac 搭建 Vue 开发环境
前端·vue.js