點擊菜單刷新頁面
當前的問題是芋类,當?shù)卿浀较到y(tǒng)后,只有第一次點擊目錄的時候才刷新丽焊,后面再次點擊無反應(yīng),需要手動刷新頁面,客戶嫌麻煩帽芽,因此在網(wǎng)上搜了下,一共找到了四種方法款票,在此先做記錄翼悴,遇到問題都可以嘗試下谍椅,以備不時之需
- 第一種 使用
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 } = {};
// 表示對路由允許復(fù)用
public shouldDetach(route: ActivatedRouteSnapshot): boolean {
return false;
}
// 當路由離開時會觸發(fā)
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];
}
// 進入路由觸發(fā)掺逼,判斷是否同一路由
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 },
]
這樣就可以了,以上第四種方法是我現(xiàn)在項目中用到的祠斧,在我這可行,對于其他的項目,有待嘗試。