数据库表:
--------------------------------------------------------------------
| ID | PARENT ID | TITLE | URL |
--------------------------------------------------------------------
| 1 | 0 | Programming | programming |
--------------------------------------------------------------------
| 2 | 1 | Logic | programming/logic |
--------------------------------------------------------------------
| 3 | 1 | Object-Oriented | programming/oop |
--------------------------------------------------------------------
| 4 | 2 | PROLOG | programming/logic/prolog |
--------------------------------------------------------------------
| 5 | 2 | LISP | programming/logic/lisp |
--------------------------------------------------------------------
| 6 | 3 | JAVA | programming/oop/java |
--------------------------------------------------------------------
| 7 | 3 | C# | programming/oop/csharp |
--------------------------------------------------------------------页面设置:
<html>
<body>
<nav ng-controller="navController">
<ul ng-repeat="menuItem in menuItems">
<li><a href="#/{{menuItem.URL}}">{{menuItem.Title}}</a></li>
</ul>
</nav>
<div ng-view>
</div>
</body>
</html>解释:
我的导航菜单是从数据库查询派生出来的,其中的钻入导航一次只显示一个级别。
第一级只显示一个菜单项:
<ul>
<li>
<a href="#/programming">Programming</a>
</li>
<ul>如果我单击“编程”链接,导航现在将显示该菜单项的子项:
<ul>
<li>
<a href="#/programming/logic">Logic</a>
</li>
<li>
<a href="#/programming/object-oriented">Object-Oriented</a>
</li>
</ul>Assumptions:
(1)假设每个菜单项都有相应的部分。例如,“面向对象”菜单项有相应的部分at:“/partials/objectOried.html”。
(2)假设我有一个函数GetMenuItemsByUrl( url ),它将根据菜单项的url返回所有子程序。例如,如果我传递url "programming/logic“,该函数将返回第2行的所有子行,即第4行和第5行。
预期行为:
假设用户输入以下url: mywebsite.com/#/programing
(1)导航器应以下列方式提供:
(2)视图应该加载模板:/template/Programming.html
问题:
我知道如何通过路由器根据路由呈现视图。我的问题是,如何将当前的url传递给navController并告诉它重新绑定?
发布于 2014-01-31 09:57:38
看看我根据我对jsbin链接问题的理解所做的例子
要实现对路由的无限嵌套,您可以使用
$routeProvider
.when('/:url*', {templateUrl: function(args) {
return 'programming.tpl.html';
}, controller:'NavController'});这将获得作为param的整个url,它可以作为$routeParams.url属性传递给控制器。
app.controller('NavController', function($scope, $routeParams, MenuService) {
$scope.menuItems = MenuService.getMenuItems($routeParams.url);
...
}MenuService应该处理从url获取菜单项的所有逻辑。
示例非常简单,有关验证和项映射的url功能有限。可以自由地问更具体的问题。
发布于 2014-01-31 09:27:39
要实现这一点,您需要在控制器中使用$routeParams。
标记:
<a href="#/route/{{vm.org.id}}" class="btn btn-success">RouteProvider配置:
url: '/route/:id在您的控制器中:
var routeId = $routeParams.idhttps://stackoverflow.com/questions/21473597
复制相似问题