Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular ui.router重新加载父模板提供程序_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs Angular ui.router重新加载父模板提供程序

Angularjs Angular ui.router重新加载父模板提供程序,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个基于用户类型加载导航的抽象基础模板。此部件在初始加载时工作。问题是当用户登录或注销后,我无法让父templateProvider重新加载。我尝试了重新加载父模板的解决方案,但导航模板不受影响。有没有办法重新加载templateProvider,或者有更好的方法?理想情况下,我不必将导航提供程序添加到每个子路由 路线: $stateProvider .state('base', { abstract: true, views:

我有一个基于用户类型加载导航的抽象基础模板。此部件在初始加载时工作。问题是当用户登录或注销后,我无法让父templateProvider重新加载。我尝试了重新加载父模板的解决方案,但导航模板不受影响。有没有办法重新加载templateProvider,或者有更好的方法?理想情况下,我不必将导航提供程序添加到每个子路由

路线:

$stateProvider
        .state('base', {
            abstract: true,
            views: {
                content: {
                    template: '<ui-view></ui-view>',
                },
                nav: {
                    templateProvider: function ($templateFactory, User, $stateParams){
                        if(User.exists()){
                            var url = '/static/html/navs/' + User.get.type + '.html';
                            return $templateFactory.fromUrl(url);
                        }
                        else{
                            return false;
                        }
                    }
                }
            }
        })

        .state('base.index', {
            url: '/',
            controller: 'loginController',
            templateUrl: 'static/html/landing/login.html'
        })
我创造了。它是从这个

这将是调整后的状态def:

.state('base', { 
    abstract: true,
    views: {
        '': {
            template: '<ui-view></ui-view>',
        },
        /*
        nav: {
            templateProvider: function ($templateFactory, User, $stateParams){
                if(User.exists()){
                    var url = '/static/html/navs/' + User.get.type + '.html';
                    return $templateFactory.fromUrl(url);
                }
                else{
                    return false;
                }
            }
        },*/
        nav: {
          templateProvider: ['User', '$templateRequest', function(User, templateRequest){ 

            var tplName = 'templates/templateNotExists.html';

            if(User.exists) {

              tplName = 'templates/templateExists.html';
            }

            return templateRequest(tplName); 
          }],
        },
    }
})
这是子“base.index”状态的模板内容:

<input type="checkbox" ng-model="User.exists" />
<button ng-click="$state.go('base.index', null, {reload: true})" >reload</button>
把所有的东西都检查进去

.controller('loginController', ['$scope', 'User', function ($scope, User) {
  $scope.User = User;
}])
.factory('User', function(){   return { exists: false, }; })
<input type="checkbox" ng-model="User.exists" />
<button ng-click="$state.go('base.index', null, {reload: true})" >reload</button>