Angularjs 如何在布线中切换视图?我们可以在routeProvider的templateUrl中调用指令吗?
我想在路由时根据标志(标志将在用户登录cookies时设置)切换视图 诸如此类:Angularjs 如何在布线中切换视图?我们可以在routeProvider的templateUrl中调用指令吗?,angularjs,angularjs-routing,Angularjs,Angularjs Routing,我想在路由时根据标志(标志将在用户登录cookies时设置)切换视图 诸如此类: $routeProvider.when("/editTest/:ID", { templateUrl: { load: fu
$routeProvider.when("/editTest/:ID",
{
templateUrl:
{
load: function (pageView, $location) {
return pageView.get();
}
},
controller: 'EditTestController'
});
该指令:
DashboardModule.factory("pageView", function ($http, $cookieStore, $rootScope, $timeout) {
return {
get: function () {
$rootScope.formView = $cookieStore.get("cformview");
if ($rootScope.formView == "tabView") {
window.location = '/apps/templates/editTest.html';
}
else {
window.location = '/apps/templates/editTestPageView.html';
}
}
};});
所以,当用户登录并单击链接时,页面将根据标志重定向或打开。我在“templateUrl”中使用route para中的标志解决了这个问题,就像一个条件一样。在条件的基础上,进行了路由选择
$routeProvider.when('/PageManifest/:flagTab',
{
resolve: {
load: function (ShareData, $location) {
return ShareData.getPermission('GetPerCookie');
}
},
templateUrl: function (params) {
return params.flagTab == 'flagValue' ? "tabView.html" : "pageView.html";
},
controller: 'PageController'
});
实现这一点的一个更优雅的原因是使用转换:在模块的配置块中定义一个转换。在那里,您可以执行以下操作:$transitionProvider.onBefore({from:'tabView'},(transition)=>{return transition.router.stateService.target('editTest');}这不是整个解决方案,但可能是一个想法。不过,在SPA/PWA中使用window.location并不是您想要的,因为它会重新初始化整个应用程序。是的,您可能是对的。但我解决了这个问题,因为我从路由中获取了一个标志作为参数,并将其作为一个条件使用在“templateUrl”中。“templateUrl:function(params){return params.flagTab=='7A8p@NeL“?“tabView.html”:“pageView.html”;},”