【发布时间】:2013-12-05 22:22:24
【问题描述】:
我有AngularJS 和angular-ui-router 可以更好地控制我的模板。我有两个网址
- “/时间线”
- “/登录”
我的想法是加载一个父状态,它同时具有 1 和 2 的 HTML 以及一些部分。
我有一个 index.html,它加载了名为“content”的局部视图:
<!doctype html>
<html lang="en" ng-app="myApp" id="ng-app">
<body ng-controller="Login" class="auth-switch">
<div class="body_wrap" ui-view="content"></div>
</body>
</html>
这是我的部分视图“内容”的样子:
<div ui-view="header">
<div ui-view="profile"></div>
<div ui-view="messages" id="messages"></div>
</div>
<div ui-view="timeline"></div>
<div ui-view="login" ng-controller="Login"></div>
<div ui-view="footer"></div>
我尝试在这里创建一个结构并希望加载这些模板。这就是我在 app.js 中尝试做的事情:
// Now set up the states
$stateProvider
.state('content', {
abstract: true,
views: {
"content": { templateUrl: "partials/content.html" }
},
access: access.public
})
.state('content.login', {
url: "/login",
views: {
"messages": { templateUrl: "partials/messages.html" },
"header": { templateUrl: "partials/header.html" },
"login": { templateUrl: "partials/login.html" },
"footer": { templateUrl: "partials/footer.html" }
},
controller: 'Login',
access: access.public
})
.state('content.timeline', {
url: "/timeline",
views: {
"messages": { templateUrl: "partials/messages.html" },
"header": { templateUrl: "partials/header.html" },
"timeline": { templateUrl: "partials/timeline.html" },
"login": { templateUrl: "partials/login.html" },
"footer": { templateUrl: "partials/footer.html" }
},
access: access.user
})
如您所见,我创建了一个父(抽象)状态,它有两个子状态(登录和时间线)。我的主要问题是,我怎样才能将其设置为干净:
- 我是否需要每个部分模板的状态而不是使用“视图”?
- 如何在“header”模板中加载“messages”和“profile”模板?
- 我只需要两个 URL 在这种情况下使用两个状态好吗?
【问题讨论】:
标签: angularjs templates routing state angular-ui-router