我已经开始使用 AngularJS,但在处理嵌套子视图的路由时遇到了一些麻烦。
我的网站有一个基本的两列布局,如下所示:
[Main 1] [Main 2] [Main 3]
--------------------------------------
A | Content for A goes into this frame.
B |
C |
D |
E |
当您通过主菜单 (main 1, main 2, main 3) 导航到页面时,将动态生成侧面菜单链接 (a, b, c, d, e)。
即,导航到 main1 链接将发出一个请求,/main1
该请求将返回 JSON 链接数组。
当用户单击其中一个链接时,它将发出请求/main1/a
并将数据加载到内容框架中。
我目前这样做的方式是:
索引.html:
<body>
<a href="/main1">Main 1</a>
<div ng-view></div>
</body>
应用程序.js:
angular.module('test', [
'test.controllers'
])
.config([
'$routeProvider',
function($routeProvider)
{
$routeProvider
.when('/main1', {
templateUrl: '/partials/main1.html',
controller: 'Main1Ctrl'
})
.when('/main1/:id', {
templateUrl: '/partials/main1.html',
controller: 'Main1Ctrl'
})
}
]);
这就是我卡住的地方。我的Main1Ctrl
控制器目前看起来像:
angular.module('test.controllers', [])
.controller('Main1Ctrl', [
'$scope',
'$routeParams',
'Data',
function($scope, $routeParams, Data)
{
$scope.submenu = Data.query();
}
]);
我遇到的问题是如何分配$scope.content
.
如果 URL 中没有指定 ID,我需要等待子菜单呈现,然后才能从列表中获取第一个 ID(如果没有请求内容,它将默认为第一个子菜单项)。
如果用户在 URL 中指定了一个 ID,我希望/main1
和/main1/:id
请求并行触发。用户在看到他们的内容之前不需要等待菜单加载。
这甚至是处理这种布局的好方法吗?