如何从数据库动态添加到angularjs的路由

时间:2014-06-10 11:31:51

标签: node.js angularjs angular-routing ngroute angularjs-ng-route

我正在创建一个NodeJs + AngularJS应用程序。我有存储在数据库中的酒店列表。我想根据酒店名称和基于属性ID的加载局部视图创建动态路线。

E.g在我的数据库中,我有:

HotelID         HotelName                       

1               example hotel                   
2               second example hotel            
3               third example hotel                 

在app.js我想要这样的东西

var hotelierApp = angular.module('hotelierApp', ['ngRoute', 'ngCookies', 'pascalprecht.translate', 'hotelierApp.services', 'hotelierApp.directives', 'hotelierApp.filters', 'hotelierApp.controller']);
hotelierApp.run(function ($rootScope) {
$rootScope.langId = 1;
})
hotelierApp.config(['$routeProvider', '$locationProvider', '$translateProvider',
function ($routeProvider, $locationProvider, $translateProvider) {

    angular.forEach(hotels, function (hotel) {
  $routeProvider.when(hotel.name.replace(" ","-"), { templateUrl: 'partials/property', controller: propertyCtrl });
});

angular.forEach(评论,功能(评论){       $ routeProvider.when(review.title.replace(“”,“ - ”),{templateUrl:'partials / review',controller:reviewCtrl});     });

    $locationProvider.html5Mode(true);

    $translateProvider.useStaticFilesLoader({
        prefix: 'data/locale-',
        suffix: '.json'
    });
    $translateProvider.preferredLanguage('en');
    $translateProvider.useLocalStorage();
}

]);

这里的酒店/评论将是来自数据库的列表,通过进行api调用,我也希望将相应的ID作为路由参数传递给控制器​​。

我的应用程序中还有许多其他部分,我必须从数据库创建路径。

请帮忙。

此致 - Manoj

2 个答案:

答案 0 :(得分:3)

没有理由你需要这样做。

我很确定你的路线可以被纳入像

这样的东西
$routeProvider.when("/:id/:name", { 
templateUrl: 'partials/property', controller: propertyCtrl })

然后使用$ routeParams获取控制器中酒店的名称。对于模板网址,您可以传递函数而不是字符串来解析您需要使用的模板的名称。

templateUrl:function(pathParms){...}

所以不需要使用angular.forEach。

答案 1 :(得分:0)

虽然这是使用另一台路由器:http://dotjem.github.io/angular-routing/在核心路由器中可以使用相同的东西。

以下是@mpm所说的内容:http://plnkr.co/edit/8XuJswpx0FucwMczWTHF?p=preview

在你的情况下,我认为Option1是最合适的,这是因为你谈到了生成的url pr。酒店,这让我觉得所有酒店的布局都有很大的相似性。

如果是这种情况,他们也可以共享模板,您可以使用酒店特定数据填充模板。