美文网首页
Angular点击菜单刷新页面

Angular点击菜单刷新页面

作者: _红桃K | 来源:发表于2018-09-18 14:05 被阅读0次

点击菜单刷新页面

当前的问题是,当登录到系统后,只有第一次点击目录的时候才刷新,后面再次点击无反应,需要手动刷新页面,客户嫌麻烦,因此在网上搜了下,一共找到了四种方法,在此先做记录,遇到问题都可以尝试下,以备不时之需

  • 第一种 使用 ui-sref-opts 功能(不好使,没找到原因):
  <a ui-sref="page" ui-sref-opts="{reload:true,notify:true}">链接</a>
  • 第二种 click事件(不好使,没找到原因):
  $state.go('page',,{reload:true});
  • 第三种 (仍不好使,没找到原因)
  <app-view cache-view="false"></app-view>
  • 第四种 相当可行app.module.ts同级目录下新建一个app-routing.cache.ts文件
import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';

export class AppRoutingCache implements RouteReuseStrategy{
    public static handlers: { [key: string]: DetachedRouteHandle } = {};
    // 表示对路由允许复用
    public shouldDetach(route: ActivatedRouteSnapshot): boolean {
        return false;
    }
    // 当路由离开时会触发
    public store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
        AppRoutingCache.handlers[route.routeConfig.path] = handle;
    }
    // 若path在缓存中有的都认为允许还原路由
    public shouldAttach(route: ActivatedRouteSnapshot): boolean {
        return !!route.routeConfig && !!AppRoutingCache.handlers[route.routeConfig.path];
    }
    // 从缓存中获取快照,若无则返回null
    public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
        if (!route.routeConfig) {
            return null;
        }
        return AppRoutingCache.handlers[route.routeConfig.path];
    }
    // 进入路由触发,判断是否同一路由
    public shouldReuseRoute(future: ActivatedRouteSnapshot, current: ActivatedRouteSnapshot): boolean {
        return future.routeConfig == current.routeConfig;
    }
}

然后在app.module.ts中添加:

import { RouteReuseStrategy } from '@angular/router';
import { AppRoutingCache } from './app-routing.cache';
providers: [
  { provide: RouteReuseStrategy, useClass: AppRoutingCache },
]

这样就可以了,以上第四种方法是我现在项目中用到的,在我这可行,对于其他的项目,有待尝试。

相关文章

  • Angular点击菜单刷新页面

    点击菜单刷新页面 当前的问题是,当登录到系统后,只有第一次点击目录的时候才刷新,后面再次点击无反应,需要手动刷新页...

  • UICollectionView的隐式动画消除

    背景 页面使用了UICollectionView,有要求点击底部菜单选项的时候需要再次刷新页面内容。在刷新的时候会...

  • 一文搞定为什么nginx部署页面刷新404

    我们在用nginx部署时候完项目会出现页面刷新会404,而页面上点击跳转(一般比如点击菜单)页面则不会404,为什...

  • 刷新当前路由

    有时候我们点击菜单时想要刷新该菜单的页面内容,这个时候直接导航到当前页面本身会报错,我们可以在导航前检查是否导航到...

  • IIS下发布angular的坑

    Angular项目在IIS中浏览时,当页面刷新时会出现404页面,这是因为Angular无刷新的特性引起的,在浏览...

  • ajax实现简单的点击左侧菜单,右侧加载不同网页

    实现:ajax实现点击左侧菜单,右侧加载不同网页(在整个页面无刷新的情况下实现右侧局部刷新,用到ajax注意需要在...

  • 如何刷新信息?

    进入【商家中心】—左侧菜单【信息推广】的「信息刷新」,点击信息后面的操作 「刷新」进行手动刷新。 批量刷新: 点击...

  • 点击页面刷新

    window.location.href = '';

  • Vue 重新渲染当前路由

    想必大家在平时开发的时候可能遇到这种需求,在打开该菜单页面的情况下,再次点击菜单需要刷新该组件(销毁再创建)。而v...

  • 优化体验:首屏优化,除了Loading动画还有什么

    目标 防止页面刷新的瞬间空白 效果动画 方法介绍 (基于Angular8) 01 Angular Universa...

网友评论

      本文标题:Angular点击菜单刷新页面

      本文链接:https://www.haomeiwen.com/subject/hfcunftx.html