当前位置: 首页 > news >正文

html5做网站链接范例wordpress右下角弹出广告

html5做网站链接范例,wordpress右下角弹出广告,找网页模板的网站好,最火的网站开发语言需求 页面中上面搜索项有获取字典枚举接口,table表格中也有根据key匹配字典中的value 方案一 需要做到的要求 这里上面下拉列表是一个组件获取的字典,下面也是通过字典匹配,所以尽量统一封装一个函数,每个组件保证最少变动tabl…

需求

页面中上面搜索项有获取字典枚举接口,table表格中也有根据key匹配字典中的value

方案一

在这里插入图片描述

需要做到的要求

  • 这里上面下拉列表是一个组件获取的字典,下面也是通过字典匹配,所以尽量统一封装一个函数,每个组件保证最少变动
  • table表格中如果filters中更改,会获取多次接口,—使用闭包让只获取一次接口,节省性能
  • filter中又是必须同步函数,异步函数报错,所以不能使用async,await
  • 最好请求接口之后存储起来下次直接拿不用请求了

综上

utils/dictionary.js

import { getDicValue } from '@/api/systemManage'
import store from '@/store'
/*** 获取字典数据* @param {Boolean} hasAllOption 是否包含全部选项*/
export function getDicValueList(dictClassCode, hasAllOption = true) {const dictionaryCache = store.state.dictionary.dictionaryCache || {}return new Promise((resolve, reject) => {let optionList = []if (dictionaryCache[dictClassCode]) {const dicList = JSON.parse(JSON.stringify(dictionaryCache[dictClassCode]))if (hasAllOption) {optionList = [ { value: '', label: '全部' }, ...dicList]} else {optionList = [...dicList]}resolve(optionList)} else {getDicValue(dictClassCode).then(response => {console.log('字典调用', dictClassCode)const dicList = response.value || []store.dispatch('dictionary/setDictionaryCache', { key: dictClassCode, value: dicList })if (hasAllOption) {optionList = [ { value: '', label: '全部' }, ...dicList]} else {optionList = [...dicList]}resolve(optionList)}).catch(error => {reject([])})}})
}/*** 获取字典数据并返回一个闭包函数* @param {string} dictClassCode 字典类代码* @param {string} noTitle 默认值,当找不到匹配项时返回* @returns {Promise<Function>} 返回一个闭包函数,该函数可以根据 value 获取 label*/
export async function getDicValueName(dictClassCode, noTitle = "--") {try {const response = await getDicValueList(dictClassCode, false)const listData = response || []return (value) => {let label = noTitlelistData.some(item => {if (item.value === value) {label = item.labelreturn true}})return label}} catch (err) {console.error(err)return (value) => noTitle}
}

下拉框组件

created () {this.getOptionLists()},getOptionLists() {if (this.dictClassCode) {getDicValueList(this.dictClassCode).then(res => {this.optionLists = res})} else {this.optionLists = this.options}},

table组件中

<span>{{ filterStateName(scope.row.state) }}</span>import { getDicValueName } from '@/utils/dictionary'created() {this.initDictionary()},methods: {
async initDictionary() {try {this.filterStateName = await getDicValueName('DC_DICTIONARY_STATE')} catch (error) {console.error('Failed to fetch dictionary:', error)this.filterStateName = (value) => '--'}},}

问题: 但是这种因为一进页面这两个组件都是去获取字典,所以还是从接口拿的数据,会调用两次接口

方案二(建议)

方案:接下来优化可以通过路由导航预加载,先获取字典之后,在加载页面
router.js

// 预加载字典
export function preloadDictionary(dictClassCodeList) {const pList = []dictClassCodeList.forEach(dictClassCode => {const p = getDicValueList(dictClassCode)pList.push(p)})return Promise.all(pList)
}// 预加载字典
router.beforeEach((to, from, next) => {if(to.meta && to.meta.dictClassCodeList&& to.meta.dictClassCodeList.length > 0) {preloadDictionary(to.meta.dictClassCodeList).then(res => {next()})} else {next()}
})

总结:其实这里都可以规定直接预加载字典,到页面直接使用加载后的字典,注册个全局filters就行,根本不用上面那些,先都记录上,后期根据需求灵活应用吧

http://www.yayakq.cn/news/650231/

相关文章:

  • 影视制作做的好的有什么网站燃烧学课程网站建设
  • 门户网站制作模板shopex进入网站自动回跳转到别的网站 是否被挂马
  • 淄博网站制作定制技术判断网站模板版本
  • 企业网站建设的要素有哪些wordpress用什么linux
  • 深圳建站公司优化做海报设计的图片网站有哪些
  • 做玻璃的网站东莞网站建设东莞
  • 山西中小学网站建设微信小程序费用有哪些
  • 网站提示404error订阅号做微网站需要认证吗
  • 做广告的软件app有哪些seo排名工具外包
  • 网站常见问题wordpress公司网站
  • 邮件网站排名联系客户做网站
  • 什么软件能看网站?织梦网站模板视频
  • 郑州网站建设361苏州室内设计公司
  • 营销网站如何建设平台线上推广策略怎么写
  • 网站建设的实施方案山东德州网站建设
  • 我学的 网站开发 能进华为公司么凡客优品
  • 手机网站编程关于网络编辑作业做网站栏目新闻的ppt
  • 九寨沟网站开发的背景网站建设维护推广合同
  • 网站开发员的工资优舟网站建设
  • 企业品牌网站建设我们的优势wordpress仿小程序
  • 建设网站创业如何做一张网站平面效果图
  • 无锡哪里做网站百度怎么搜图片
  • 公司建站详细步骤合肥网络公司平台
  • 怎么做视频网站企业网站托管排版设计制作
  • 四川长昕建设工程有限公司网站宁波建站方案
  • 虚拟主机空间 配置 网站制作网页框架
  • 四川市网站建设东莞市赢网网络科技有限公司
  • 高端网站定制的方法济南电子商务网站建设
  • 东莞市官网网站建设平台医院网站建设 不足
  • 最好网页游戏网站做爰全过程免费的视频网站有声音