在JS文件中使用或扩展已有的vue文件_吕小胖纸
工作中遇到一个给现有项目增加一个超时重新登录的提醒框(可在提醒框中直接登录本账户)。
由于页面稍微复杂,本人又是脚手架一把梭过来的,对于直接使用 js
来完成一整个复杂还带逻辑的页面稍显吃力,所以决定先写一个 vue
页面。
其实是接到需求,看到设计图自然而然打开项目新建了一个 vue
页面,后面需要用的时候才发现需要在 js
中直接调用,又想起好像并没有这样干过,遂打开了程序员万能百度。。。。并没有太多相关的信息呀。
最后纠结于自己是要重新搞还是将就现有的 vue
页面,最后还是不愿意放弃已经写好的东西,胡乱整了些,居然出来了。
将经验贡献出来:
1). 先写了一个 vue
文件,然后发现超时提醒操作需要写在请求相应处,不能像普通写页面一样使用。所以又写了一个 js
文件,创建了一个新类继承该 vue
文件并实例化(中间出现继承时传入参数 props
的 visible
并不能控制实际模态框的显隐问题,又将传入的 props
全部赋值给实例化类的 $props
)
2). 后面因需求需要不关闭当前所有的项目内 tabs
,但需要刷新页面,因为组件不同,使用到了 event bus
(之前项目中有在全局挂载 vue
,所以直接使用的全局 vue
)
附代码:
*** 1. 新建一个超时重新登录提醒框的vue页面refreshLoginDialog.vue ***
部分代码:
正常写好逻辑操作等。
*** 2. 第二步:新建一个 refreshLoginDialog.js 文件 ***
代码如下:
// refreshLoginDialog.js
import Vue from 'vue'
import RefreshLoginDialog from './refreshLoginDialog.js'
class RefreshLogin {
constructor(props) {
const LoginConstructor = Vue.extend(RefreshLoginDialog)
this.refreshLogin = new LoginConstructor({ props })
if (props && Object.entries(props).length) {
Object.entries(props).forEach(([key, value]) => {
this.refreshLogin.$props[key] = value
})
}
}
installOnce() {
const app = document.querySelector('#app')
const loginWrapper = app.querySelector('.refresh_login')
if (loginWrapper) {
this.show()
} else {
// 添加实例挂载至页面
app.appendChild(this.refreshLogin.$mount().$el)
}
}
show() {
this.refreshLogin.$props.visible = true
}
}
*** 第三步:在request.js 的请求拦截里面使用 ***
这样就没有问题了。
虽然我总觉得哪里不对劲。。。。
这个用法感觉相当于在 js
页面中使用 UI
框架的组件,但是人家直接用的 install
:
在之后我翻看 element-ui
的源码是怎么做的,发现直接 Vue.component
注册了一下就可以。我仿佛收到了什么巨大的打击。但是并不想去修改我的代码。能跑就不要动了。。。。。
相关文章
- 基于VitePress创建组件文档_vitepress文档_Shaka@
- List使用stream流转成map的几种方式_小小小米fly_list stream转map
- JS小知识,如何将 CSV 转换为 JSON 字符串_前端达人
- 如何使用 cURL 发布 JSON 数据?_curl发送json数据_HuntsBot
- 新增:前端提示“请求JSON参数格式不正确,请检查参数格式_json格式不正确怎么解决_小刘学爪哇
- 关于cJSON库,cJSON_Parse()函数——josn格式校验问题_胖大星v_cjson_parse
- json专题_jsonobject删除某个key_村东头老杨
- 【 uniapp - 黑马优购 | 商品列表 】如何实现数据获取、结构渲染、自定义组件的封装_小新爱学习.
- JWT总结_jwt解密_XiLitter
- python中文编码&json中文输出问题_json 输出中文_代码输入中...
- java报错 Error starting Tomcat context. Exception: java.lang.IllegalArgumentException._unable to set i
- IDEA之创建JavaEE项目并配置Tomcat_@陆先生
- es数据导入导出_树下的阳光@0724_es数据导出
- Json传输出现中文乱码的问题_大羊腿188_json中文乱码
- 解决小程序报错getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json_to
- echarts-当折线图有多组数据且数据需要显示在同一图表时_qq_40950174
- Vue的自学之路(三)_yarn build_编程武六七
- 【JavaWeb】Servlet系列——HttpServletRequest接口详解_jakarta.servlet.http.httpservletrequest_胖虎不秃头
- Docker 安装 kafka(M1 芯片版)_文大奇Quiin
- idea配置JavaWeb详细过程_idea配置web_helloCrlion
- 基于 confluent 的 kafka-connect-jdbc 数据同步方法!_kafka connect jdbc_polarrwl
- python的kafka安装教程和使用教程 windows_pip install kafka_菜鸡的我想成为高手
- Vue的数据的可视化_vue 数据可视化_fvcvv
- Flink1.14学习测试:接收kafka消息将结构化数据通过JDBC保存到数据库中_flinkkafkaconsumer过时_lyanjun
- Tomcat出现404的解决方法[类型 状态报告 消息 请求的资源[/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源]_类型 状态报告 消息 请求的资源[/brand-
- 【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Form表单填写、Dialog对话框弹出_element-ui后台管理系统全局弹框_karshey
- 三.Kafka入门到精通-SpringBoot整合Kafka(同步&异步消息&事务消息&手动确认)_spring.kafka.listener.ack-mode_墨家巨子@俏如
- 常用日志解决方案实践与学习_日志方案_scl、
- 如何将 WAR 文件部署到 Tomcat_war包怎么部署到tomcat_allway2
- echarts中的legend属性_tmmi_echarts legend属性