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