当前位置: 代码迷 >> 综合 >> VUE----将字符串变成函数来执行
  详细解决方案

VUE----将字符串变成函数来执行

热度:26   发布时间:2024-03-07 13:45:47.0

 重点:[1] const methods = this.$options.methods    // 获取本组件下的所有method

            [2] methods[item.methodName].call(this, item)  // 使用this.$options.methods 会有this指向问题

<script>
import _ from 'lodash'
import adImage from '@/assets/base/ad.png'
import manageService from '@/services/manage'export default {data() {return {bannerImgList: [{imgUrl: adImage}, {imgUrl: adImage},{imgUrl: adImage},],menuList: [{menuCode: '100', icon: 'cashier-o', menuName: '商品管理', url: '/manage/query-goods'},{menuCode: '101', icon: 'add-o',     menuName: '商品入库', url: '/manage/goods-inbound'},{menuCode: '102', icon: 'close',     menuName: '商品出库', url: '/manage/goods-outbound'},{menuCode: '104', icon: 'search',    menuName: '订单查询', url: '/manage/query-order', methodName: 'getTodayOrderNum'},{menuCode: '105', icon: 'chart-trending-o', menuName: '订单分析', url: '/manage/analyse-order'},],}},activated() {// 查询每个菜单是否执行方法this.queryMenuExceMethod()},methods: {async queryMenuExceMethod() {//  获取本组件下的所有methodconst methods = this.$options.methods_.forEach(this.menuList, item => {// 判断是否需要执行函数if (!!item.methodName) {// 使用this.$options.methods 会有this指向问题methods[item.methodName].call(this, item)}})},async getTodayOrderNum(item) {const orderNum = await manageService.getTodayOrderNum()if (!orderNum) return this.$set(item, "badge", orderNum)},more() {this.$toast('功能开发中...')}}
}
</script>

 

  相关解决方案