首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角-如何通过路由器将信息传递给控制器?

角-如何通过路由器将信息传递给控制器?
EN

Stack Overflow用户
提问于 2014-01-31 06:12:25
回答 2查看 139关注 0票数 1

数据库表:

代码语言:javascript
复制
--------------------------------------------------------------------
| 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        |
--------------------------------------------------------------------

页面设置:

代码语言:javascript
复制
<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>

解释:

我的导航菜单是从数据库查询派生出来的,其中的钻入导航一次只显示一个级别。

第一级只显示一个菜单项:

代码语言:javascript
复制
<ul>
    <li>
        <a href="#/programming">Programming</a>
    </li>
<ul>

如果我单击“编程”链接,导航现在将显示该菜单项的子项:

代码语言:javascript
复制
<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并告诉它重新绑定?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-31 09:57:38

看看我根据我对jsbin链接问题的理解所做的例子

要实现对路由的无限嵌套,您可以使用

代码语言:javascript
复制
$routeProvider
.when('/:url*', {templateUrl: function(args) {
    return 'programming.tpl.html';
}, controller:'NavController'});

这将获得作为param的整个url,它可以作为$routeParams.url属性传递给控制器。

代码语言:javascript
复制
 app.controller('NavController', function($scope, $routeParams, MenuService) {
    $scope.menuItems = MenuService.getMenuItems($routeParams.url);
    ...
 }

MenuService应该处理从url获取菜单项的所有逻辑。

示例非常简单,有关验证和项映射的url功能有限。可以自由地问更具体的问题。

票数 0
EN

Stack Overflow用户

发布于 2014-01-31 09:27:39

要实现这一点,您需要在控制器中使用$routeParams。

标记:

代码语言:javascript
复制
<a href="#/route/{{vm.org.id}}" class="btn btn-success">

RouteProvider配置:

代码语言:javascript
复制
url: '/route/:id

在您的控制器中:

代码语言:javascript
复制
var routeId = $routeParams.id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21473597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档