在 AngularJS 中使用不同的母版视图页进行状态
State with A Different Master View Page in AngularJS
我犯了一个大错误,在我的单页角度应用程序中将整个母版页及其页面设计在一个没有嵌套结构的视图中。现在,我需要一个结构完全不同的登录页面,更改模板并添加根页面有点耗时。
我正在寻找一种导航到(或重定向)到我的登录页面的方法,但我希望我的登录页面模板适合整个页面,而不是适合 ui-view。
这可能吗?
<p>I don't want this paragraph in my login</p>
<div ui-view></div>
var loginState =
{
name: 'login',
url: "/login",
// root: ? there should be no root for this
templateUrl: 'app/access/login.html',
controller: 'LoginPageController',
resolve: {
deps: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([{
name: 'App',
files: [
"app/LoginPageController.js"
]
}]);
}]
}
}
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $routeProvider, $locationProvider) {
$routeProvider.otherwise("/dashboard");
$stateProvider.state(dashboardState).state(testState)
.state(loginState)
我想
分享我使用的方法。
老实说,我的情况要容易一些,因为我已经只有几个不同的根(及其层次结构)。但即使你必须在很多地方这样做,你以后也会收获很多。
有一个工作弹道
机所以,诀窍是引入一些超级状态:
.state('root', {
abstract: true,
templateUrl: 'tpl.layout.html',
})
并且<body>
的内容将移动到 tpl.layout.html。
Index.html
:
<body>
<div ui-view=""></div>
</body>
tpl.layout.html
:
<p>I don't want this paragraph in my login</p>
<ul>
<li><a href="#/home">home</a>
<li><a ui-sref="parent">parent</a>
<li><a ui-sref="parent.child">parent.child</a>
<li><a href="#/login">login</a> special layout page
</ul>
<div ui-view="">
The target for any child of the "root" state
</div>
最后是所有状态的调整 - 我们必须仅使用一个设置扩展每个当前/现有的根状态: parent: "root",
.state('home', {
parent: "root",
... // existing state setting
})
.state('parent', {
parent: "root",
... // existing state setting
})
...
虽然任何特殊状态,例如登录都可以从头开始
.state('login', {
url: "/login",
template: '<div>different login <a href="#/home">home</a></div>',
})
在此处检查其运行情况
我们以后能得到什么?好吧,现在我们确实有一个状态,它几乎总是被触发(在我们的例子中除了登录)。因此,我们可以在这个地方下一些决心,并确保每个州都可以拥有
例如,检查此问答(或此更新ui.router父状态中的解析对象的示例):
.state('root', {
abstract: true,
template: '<div ui-view></div>',
resolve: {objectX : function() { return {x : 'x', y : 'y'};}},
controller: 'rootController',
})
相关文章:
- WinJs中的视图状态更改事件在哪里
- ASP Web 窗体从视图状态中删除类客户端
- 是否可以在没有视图状态和回发的情况下使用asp.net web表单
- 在 Ember 中,视图/状态逻辑应该位于何处
- 离子选项卡视图 状态提供程序空白视图
- Ember.js 视图状态不追加视图
- AngularJS:使用不同的控制器保持不同视图之间的视图状态
- 离子不会更改视图/状态,除非它是一个选项卡
- Marionette主干:具有多种可能视图状态的子视图
- window.location.reload();正在IE8中丢失视图状态
- 正在删除相关中继器控件的视图状态
- 通过javascript API保存和恢复Tableau图的当前视图状态
- 正在从回发响应更新视图状态
- 使用HTML5本地存储保存视图状态
- ASP的大小. NET视图状态
- 如何在AngularJS中处理实时数据和视图状态
- 回发时无效的视图状态错误
- AngularJS.中分离模型和视图状态
- 使用智能表在视图状态 AngularJs 之间持久化数据
- 使用ASP.NET AJAX填充列表后更新视图状态