如何从数据库dynamic添加路由到angularjs

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

例如在我的数据库中,我有:

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(reviews,function(review){$ 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作为路由parameter passing给控制器​​。

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

请帮忙。

问候, – Manoj

你没有理由需要这样做。

我很确定你的路线可以被分解成类似的东西

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

然后使用$ routeParams获取控制器中的酒店名称。对于模板url,您可以传递一个函数,而不是一个string,它将parsing您需要使用的模板的名称。

 templateUrl:function(pathParms){...} 

所以不需要使用angular.forEach。

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

这里是说明什么@mpm说你可以做: http ://plnkr.co/edit/8XuJswpx0FucwMczWTHF?p=preview

在你的情况下,我认为select1是最合适的,这是因为你谈论一个生成的url公关。 酒店,这使得我认为所有酒店的布局有很大的相似性。

在这种情况下,他们也可以共享模板,在这里您可以使用酒店特定的数据填充模板。

Interesting Posts