当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何在.js文件夹中增加路由跳转及弹窗?

施鸿
2024-02-27

想在vue项目中的utils文件夹中的.js文件增加路由跳转及弹窗该如何加?

没有在.vue页面中,在.js文件中打印router是undefined

共有2个答案

阮轶
2024-02-27

直接引入就可以用了

import router from "@/router";export function getRouterInfo() {  console.log(router);}

image.png

乐正翰
2024-02-27
// @/route/index.jsconst router = new VueRouter({  mode: 'history',  base: '/',  routes: [  {  path: 'somewhere',  component: somewhere,  } ],})export default router
import router from '@/route'export function goSomewhere() {  router.push('/somewhere')}

如果是想加弹窗的话可以写一个挂载方法,拿我正在用的举例:

import Vue from 'vue'export const cache = new Set()export default function useDialog(component) {  const div = document.createElement('div')  const el = document.createElement('div')  const id = 'dialog-' + Math.random()  div.appendChild(el)  document.body.appendChild(div)  const ComponentConstructor = Vue.extend(component)  return (propsData = {}, parent = undefined) => {    let instance = new ComponentConstructor({      propsData,      parent,    }).$mount(el)    const destroyDialog = () => {      if (cache.has(id)) return      if (instance && div.parentNode) {        cache.add(id)        instance.visible = false        // 在关闭动画执行完毕后卸载组件        setTimeout(() => {          cache.delete(id)          instance.$destroy()          instance = null          div.parentNode && div.parentNode.removeChild(div)        }, 250)      }    }    // visible控制    if (instance.visible !== undefined) {      // 支持sync/v-model      instance.$watch('visible', (val) => {        !val && destroyDialog()      })      Vue.nextTick(() => (instance.visible = true))    }    return new Promise((resolve, reject) => {      // 组件内 emit done 事件表示确认      instance.$once('done', (data) => {        destroyDialog()        resolve(data)      })      // 组件内 emit cancel 事件表示取消      instance.$once('cancel', (data) => {        destroyDialog()        reject(data)      })    })  }}

使用用法:

import AddGroupDialog from './AddGroupDialog.vue'function handleAdd() {      useDialog(AddGroupDialog)({// ...props      }).then(() => {// onDone      })    },
 类似资料:
  • route(Object) 此为一个路由跳转方法,内部是对uni多个路由跳转api的封装,更方便使用 Object参数说明: 参数名 类型 默认值 是否必填 说明 type String navigateTo false navigateTo或to对应uni.navigateTo,redirect或redirectTo对应uni.redirectTo,switchTab或tab对应uni.swit

  • 本文向大家介绍react-router JS 控制路由跳转实例,包括了react-router JS 控制路由跳转实例的使用技巧和注意事项,需要的朋友参考一下 Link组件用于正常的用户点击跳转,但是有时还需要表单跳转、点击按钮跳转等操作。这些情况怎么跟React Router对接呢? 下面是一个表单。 第一种方法是使用browserHistory.push 第二种方法是使用context对象。

  • 我想加载(要求)一个包含json模式的文件夹,这些模式具有基于其文件的引用。 换句话说,我有 并在同一文件夹中的另一个文件中: 这些模式在sperate文件中,现在应该加载到JS中,以便针对json对象进行验证。但是,文件夹内的引用应该仍然有效。 这就是为什么我的问题是,是否以及如何能够加载一个装满json文件的文件夹,而不需要中断引用。 这个库将使用这些模式来验证json对象:https://g

  • 我只想从文件的完整路径中获取文件夹路径。 例如,我希望只得到(不包括)。 我曾经尝试过这样的事情: 但它给了我这样一个结果: 这不是我需要的结果(是)。 关于如何获取文件路径有什么想法吗?

  • 已知shops目录下有一个index.vue文件,按住ctrl+鼠标点击路径进行跳转,如何实现不写index.vue也能进行跳转呢?

  • 问题内容: 对于AngularJS来说,这很陌生,我想我打算做的术语是延迟加载。我看过几个不同的博客,但没有找到纯粹使用AngularJS的完整工作解决方案。 我知道,如果将in 放到index.html中,则一切正常,我正在尝试减少在初始负载时减少的js数量。 脚本标签位于局部文件中时,它永远不会被加载,因此永远不会创建P1Ctrl。因此,当前,如果用户进入该应用程序而从未去过process55