Angular UI路由器在运行时替换视图
Angular UI Router replace view on runtime
我试图在运行时更改父视图模板-在服务中。
我的应用配置如下:
$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'
}
}
});
然后我有一个从someecontentctrl调用的服务,它将监听事件,并且在这样的事件上,我想将头部的templateUrl设置为空。比如:
angular
.module('RemoveTemplate', [ ])
.factory('RemoveTemplate', ['$window', '$view', '$state',
function RemoveTemplate ( $window, $view, $state ) {
var windowElem = angular.element($window);
var listen = function ( ) {
windowElem.on('RemoveTemplate', function ( event ) {
$view.load('header@base', {
templateUrl: null
});
// Trying both, even tried without refreshing the state
$state.reload();
$state.go('wh.lobby');
});
};
return {
listen: listen
};
}
]);
});
但这根本不起作用。以前有人遇到过类似的用例吗?
谢谢
你可以指定一个templateURL函数,在每次导航到状态时运行。
https://github.com/angular-ui/ui-router/wiki/Quick-Reference template-templateurl-templateprovider
这个方法可以检查它是否应该提供url或其他东西;例子:
$stateProvider.state('home', {
url: '/',
templateUrl: function () {
if (header === true) {
return 'app/templates/home.html';
} else {
return somethingElse;
}
}
})
如果你想在不删除html的情况下'隐藏' header部分,请尝试在header标签中使用ng-show指令并检查实际状态。
<div ng-show="state.is('base')">
这样你只需要在控制器中注入$state服务。当状态为base时,div将显示,如果导航到子状态,它将隐藏。
注。美元的状态。Is返回一个布尔值,此方法也适用于ng-if。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 在视图被替换后,主干视图事件未激发,然后放回页面上
- 主干:如何在视图中将一个模型替换为另一个模型
- 在 Web 视图中设置 innerHTML 将替换整个文档,而不仅仅是元素
- 离子替换新视图的选项卡和页脚
- 查看 json,然后单击该 json 中的 links.json,并将其替换为当前 json 视图
- 用编辑表单替换视图数据
- Angular UI路由器在运行时替换视图
- 如何替换一个单一的ui-视图,如果我有多个ui-视图在一个单一的html
- 用子路由替换父视图
- Javascript/Typescript -在视图中将用户ID替换为用户名
- jQuery中的RegEx在SharePoint的多行文本字段列表视图中用链接替换模式
- AngularJS视图没有't在替换值时更新
- 如何在AngularJS中将一个子视图替换为另一个子视图
- c# mvc动作用纯文本替换视图