Angularjs动态路由模板Url变化

Posted

技术标签:

【中文标题】Angularjs动态路由模板Url变化【英文标题】:Angularjs dynamic route templateUrl change 【发布时间】:2017-11-25 14:54:23 【问题描述】:

我读过关于 templateUrl 的文档,它只需要 $stateParams 作为函数参数,所以我检查了 templateProvider,文档说它只能返回 html 视图('view.html')。

问题

我正在使用 mvc 5,在 templateUrl 中我只是引用了我的 mvc 视图控制器。 但现在我想根据工厂解决的承诺动态选择模板。 结果是期望的视图是空的。我得到空视图,控制台很干净。 我检查了console.log($templateRequest('groupView/addNewGroup')); 的结果(屏幕上方) 我得到了 html,但我的视图是空的。

.

是否可以引用 mvc 控制器而不是在 templateProvider 中返回 '.html' 文件?

我的代码

.state('addNewGroup', 
    url: '/group/new',
    resolve: 
        isUserLoggedIn: function ($templateRequest, checkPermission) 
            checkPermission.checkPermission()
                .then(function (result) 
                    if (!result) 
                        return $templateRequest('groupView/login');
                     else                           
                      console.log($templateRequest('groupView/addNewGroup'))
                      return $templateRequest('groupView/addNewGroup');
                    
                );
        
    ,
    views: 
        "leftPanel": 
            templateUrl: '/groupView/simpleLeftPanel',
            controller: 'simpleLeftPanelCtrl'

        ,
        "content": 
            templateProvider: function (isUserLoggedIn) 
                return isUserLoggedIn;
            ,
        
    ,
);

【问题讨论】:

【参考方案1】:

我只需要在checkPermission之前添加return,就像这样:

return checkPermission.checkPermission()
   .then(...)..

现在,一切都很好。

【讨论】:

以上是关于Angularjs动态路由模板Url变化的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 基于路由动态加载控制器和模板

AngularJS地址栏变化为啥不跳转到页面

如何使用angularjs处理动态菜单

AngularJS 动态路由

AngularJS - 如何验证 URL 动态参数

AngularJS - 基于路由动态加载外部 JS