vue怎么动态设置maxlength

vue怎么动态设置maxlength,第1张

vue动态设置maxlength的方法如下:

maxLength='20' 实现效果: 4动态校验规则(必填项) 利用 ant design vue官方文档 中Form表单API中的 rules,双向绑定动态校验规则。

vue项目实现 动态路由 的方式大体可分为两种:

前端这边把路由写好,登录的时候根据用户的角色权限来动态展示路由,(前端控制路由)

详情可参阅 花裤衩大佬 的项目 手把手

后台传来当前用户对应权限的路由表,前端通过调接口拿到后处理(后端处理路由)

这两种方法各有优点,效果都能实现,我们公司是通过第二中种方法实现的,原因就是公司项目里有一个专门的用户中心,里边逻辑很复杂,不好返给前端用户权限,担心路由放到前端不安全(以上的话是公司的后台同学讲的),那好吧,抱着都试试、锻炼下自己能力的态度,我们搞了第二种方法。

大体步骤:拦截路由->后台取到路由->保存路由到localStorage(用户登录进来只会从后台取一次,其余都从本地取,所以用户,只有退出在登录路由才会更新)

菜单名字menName;

菜单路径menPath;

菜单指向的资源menuUrl(也就是组件地址, 一般从views层级开始写)

前端登录后通过接口请求拿到菜单数据后,

menName ---> name

menPath ---> path

menuUrl ---->components文件

转换时,用到这个方法找组件资源 把 menuUrl 可以变为components的格式,转为组件文件

生成路由表

可以再过滤一遍生成的路由表

下面这个方法找到views底下所有的组件资源

路由表里路由的组件在所有组件资源里没找到时,将该路由的path变为/404

getRouterpush({ path: '', redirect: '/404', hidden: true });

routeraddRoutes(getRouter); //动态添加路由

前置工作:配置项目路由文件,该文件中没有路由,或者存在一部分公共路由,即没有权限的路由

每个路由都使用到组件Layout,这个组件是整体的页面布局:左侧菜单列,右侧页面,所以children下边的第一级路由就是你自己的开发的页面,meta里包含着路由的名字,以及路由对应的icon;

因为可能会有多级菜单,所以会出现children下边嵌套children的情况;

路由是数组格式

实际前端需要的 component是 component: () => import('@/views/content/classify'),

因为有多级路由的出现,所以要写成遍历递归方法,确保把每个component转成组件对象

因为后台传回的是字符串,所以要把加载组件的过程 封装成一个方法,用这个方法在遍历中使用;详情查看项目里的router文件夹下的 _import_developmentjs和_import_productionjs文件

Layout我放的目录跟其他文件的目录不一样,所以我在遍历里单独处理,各位小伙伴可自己调整哈

beforeEach路由拦截,进入判断,如果发现本地没有路由数据,那就利用axios后台取一次,取完以后,利用localStorage存储起来,利用addRoutes动态添加路由,

ps:beforeEach好坏啊,一步小心就进入到了他的死循环,浏览器都tm崩了,得在一开始就加判断,拿到路由了,就直接next(),嘤嘤嘤

globalantRouter是为了传递数据给左侧菜单组件进行渲染

上边第三步会给 globalantRouter赋值,这是一个全局变量(可以用vuex替代),菜单那边拿到路由,进行渲染

首页

问答

综合

首页 > 正文

Vuejs动态路由匹配,为什么不能识别路由参数呢

H5W32021-05-05 17:56:01

如上图,想要实现两个菜单选项共用一个页面,通过路由参数来判断功能从而筛选显示不同的内容。

selectMenu:function(key, keyPath){

consolelog(key);

switch(key){

case '1':this$routerpush('/index');break;

case '2-1-1':this$routerpush({path:'/sale/sureList/0',name:'待确认订单'});break;

case '2-1-2':this$routerpush('/logistics/logisticsList/0');break;

case '2-1-3':this$routerpush({path:'/sale/sureList/',name:'订单管理'});break;

default:break;

上面是菜单控制函数,当我选择待确认菜单时,路由成功匹配到路由中的第一项,status =0。但实际上我在surListvue页面获取路由参数失败,报错:[vue-router] missing param for named route "待确认订单": Expected "status" to be defined

导致界面不能正确渲染,还是原来的确认订单界面,如下图所示(有点丑,为了实现效果)。标题的渲染是根据路由参数来判断显示的。

可耐的小伙伴们,求助求助!

///////////////////////////////////////////////////////////////////////////////////

下面是监听路由情况下打印输出的路由及路由参数

回答:

!!$routepus()使用错误

查看$routepush()用法,发现一般有下面的三种用法,而我原来写的那种路径加名字是不合法的。

试着使用第二种和第三种命名法:this$routerpush({name:'待确认订单',params:{status:'0'}}),成功了。:)要么只push路径path,要么push name和参数status确定路由。

(1)字符串

routerpush('home')

(2)// 对象

this$routerpush({path: '/loginurl=' + this$routepath});

(3)// 命名的路由,后面的参数为动态路由的参数

routerpush({ name: 'user', params: { userId: 123 }})

(4)// 带查询参数,变成/backend/orderselected=2

this$routerpush({path: '/backend/order', query: {selected: "2"}});

回答:

首先,selectMenu方法不建议在跳转路由的时候带有中文的name,或者说路由的定义不建议用中文

其次,你想用path:'/sale/sureList/'时,进入订单管理页,但是路由指向的是待确认订单的路由,并且提示status未定义,所以你可以这样定义路由试试

path: '/sale/sureList'

另外,我做过类似的页面,两个路由指向同一个页面,这个时候在进行页面的切换时,并不会重新挂载,所以获取路由名称方式用mounted方法和watch监听方法一起做。

watch: {

'$route': function (route) {

// 监听路由变化

consolelog("router changed");

let routerName = this$routename;

consolelog(routerName);

}

},

mounted(){

let routerName = this$routename;

consolelog(routerName);

///////////////////////////////////////

简单测试url传递参数输出params:

在我的项目中遇到了两种动态增加表单项的场景,一种是对Form的添加,另外一种是对Table的添加。当初实现这两种时还有一点喜悦,现在回过头来看,发现这两种实际就是一种,以后就可以根据个人喜好选择了。

这里因为要添加的表单项存在着父子关系,要添加的子代很多,而父代属性又一致,用这种方式可以减少重复 *** 作。表单样式就不再赘述了,具体看图

这里 tab 就是我们每次添加子表单时要push进数组tabs的内容。

2、为添加要素按钮绑定一个 addTab() 方法,用于在每次添加子表单时,向数组中push一个元素

3、对表单项的编写与正常一样,只不过在数据绑定上不同,需绑定到tab中的元素

4、如果要删除多余tab,需要在 <div> 中声明一个 removeTab() 的方法,来删除对应的tab,这点区别于 addTab() ,它是定义在 <div> 之外的,每次新增的tab都会插到整个表单的末尾。

这里的table也是存在父子关系,只是展示形式的区别。因为后台的数据还有着展示的需要,所以才选用了表格这种形式来实现。

1、将table组件声明在一个 <template> 标签下,用以根据后台数据进行动态加载。

2、对表格中需要编辑的内容,可以在 <template> 标签下声明一个输入框,并使用插槽来实现数据的绑定。

3、与上面相同的,声明一个 addRow() 的方法,用于增加表格的行数。

4、删除不想要的行,需要对应增加一个 deleteRow() 方法

以上就是关于vue怎么动态设置maxlength全部的内容,包括:vue怎么动态设置maxlength、vue项目 动态路由怎么做、vue动态路由引用组件在服务器上不能识别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9666833.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存