Angularjs 如何在布线中切换视图?我们可以在routeProvider的templateUrl中调用指令吗?

Angularjs 如何在布线中切换视图?我们可以在routeProvider的templateUrl中调用指令吗?,angularjs,angularjs-routing,Angularjs,Angularjs Routing,我想在路由时根据标志(标志将在用户登录cookies时设置)切换视图 诸如此类: $routeProvider.when("/editTest/:ID", { templateUrl: { load: fu

我想在路由时根据标志(标志将在用户登录cookies时设置)切换视图

诸如此类:

$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”;},”