Javascript 运行时角度UI路由器替换视图
我试图在运行时更改父视图模板-在服务内部 我的应用程序配置如下所示:Javascript 运行时角度UI路由器替换视图,javascript,angularjs,angular-ui,angular-ui-router,Javascript,Angularjs,Angular Ui,Angular Ui Router,我试图在运行时更改父视图模板-在服务内部 我的应用程序配置如下所示: $stateProvider .state('base', { abstract: true, views: { 'header': { controller: 'HeaderCtrl', templateUrl: 'header.html' }, '': { template:
$stateProvider
.state('base', {
abstract: true,
views: {
'header': {
controller: 'HeaderCtrl',
templateUrl: 'header.html'
},
'': {
template: '<div ui-view="main"></div>'
}
}
})
.state('base.home', {
url: '/',
views: {
'main': {
controller: 'SomeContentCtrl',
templateUrl: 'content.html'
}
}
});
但这根本不起作用。以前有没有人遇到过类似的用例
谢谢您可以指定一个templateURL函数,该函数在每次导航到该状态时运行 此方法可以检查是否应该提供url或其他内容; 例如:
如果要在不删除html的情况下“隐藏”标题部分,请尝试在标题标记内使用ng show指令,并检查实际状态
<div ng-show="state.is('base')">
这样,您只需要在控制器中注入$state服务。
当状态为base时,div将显示,如果导航到子状态,它将隐藏
p、 s.$state.is返回一个布尔值,此方法也适用于ng if。谢谢您的回答。我认为这不符合上面提供的要求,因为它不允许在加载模板后更改模板。我说的对吗?这将适用于每个导航。如果您想在常规运行时删除模板,您可以随时清空DOM元素。这不是目标,可以在状态配置上实现,从我的角度来看,这是一种更干净的方法。我很感兴趣。如何从状态配置中实现它?可以通过nameOfView@nameOfState'然后将模板设置为所需的任何值。但这与我的问题无关。我希望以干净的角度方式动态删除视图。您还可以使用oneter、onExit回调。无论如何,这并不能回答我的问题。谢谢
$stateProvider.state('home', {
url: '/',
templateUrl: function () {
if (header === true) {
return 'app/templates/home.html';
} else {
return somethingElse;
}
}
})
<div ng-show="state.is('base')">