【问题标题】:Can .when be dynamically generated with Angular $routeProvider?.when 可以用 Angular $routeProvider 动态生成吗?
【发布时间】:2014-04-02 21:04:07
【问题描述】:

有一个应用程序,管理员可以在其中创建项目供用户查看。每个 ITEM 都是存储在 Mongo 中的文档。

item.html 视图和 ItemController.js 对于所有 ITEM 都是一致的。

首先向用户显示 ITEM_list 视图..
..用户可以点击一个ITEM divBox, 这将显示 item.html 视图,其中填充了为所选项目找到的特定 db 内容

有没有办法让 Angular 在 appRoutes.js 中做这样的事情

angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {

    $routeProvider

        // start page listing all the ITEMs
        .when('/', {
            templateUrl: 'views/itemsList.html',
            controller: 'ItemsListController'
        })

        // dynamic pages for each ITEM, once selected ?!
        .when('/{{ITEM}}', {
            templateUrl: 'views/item.html',
            controller: 'ItemController'
        });

    $locationProvider.html5Mode(true);

}]);

【问题讨论】:

  • 误解了你在这里问的内容,忽略前面的评论。下面的答案是正确的,如果您只需要查看特定项目的视图,您可以使用 $routeParams

标签: javascript node.js angularjs mongodb url-routing


【解决方案1】:

您可以在路由中使用参数,方法是在您想要的任何变量名称之前使用冒号。

例如:

.when('/:itemID', {
    templateUrl: 'views/item.html',
    controller: 'ItemController'
}

然后在您的 ItemController 中,您可以使用 $routeParams 调用它。

.controller('ItemController', ['$scope', '$routeParams', 

    function($scope, $routeParams) {
         $scope.itemID = $routeParams.itemID;

}]);

这里是 Angular 文档的链接以获得更多指导。 http://docs.angularjs.org/tutorial/step_07

【讨论】:

    【解决方案2】:

    您可以传递项目 id,例如,像这样:

    .when('/item/:item_id', {
            templateUrl: 'views/item.html',
            controller: 'ItemController'
        })
    

    然后,在你的控制器中,你可以注入 $routeParams:

    .controller('ItemController', function($scope, $routeParams) {
         var item_id = $routeParams.item_id;
     });
    

    然后,当他们选择时,您将位置设置为 /item/2 或其他任何内容,并且您知道它是控制器中的第 2 项,因此您可以从服务器获取该项目,或者如果您有服务已经加载了它们,您可以弄清楚它是哪一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2015-11-12
      相关资源
      最近更新 更多