2016-03-01 46 views
0

我在MEAN堆栈上实现了一个可以创建,编辑和删除课程的CRUD系统。我想知道如何管理我创建的每门课程的URL。我正在使用routeprovider。我将不得不编写看起来像这样的代码 - ?在MEAN Stack中处理批量URL

$routeProvider 
     .when('/courses/course1', 
      { 
       templateUrl: '/partials/course1', 
       controller: 'CourseCtrl1' 
      } 
     ) 
     .when('/courses/course2', 
      { 
       templateUrl: '/partials/course2', 
       controller: 'CourseCtrl2' 
      } 
     ) 
     .when('/courses/course3', 
      { 
       templateUrl: '/partials/course3', 
       controller: 'CourseCtrl3' 
      } 
     ) 
     ... 

或者是否有一些图书馆/工厂可以帮助我使这更简单?

因为我打算每个课程有100多门课程,并且每门课程都有自己独特的URL,所以上述方法似乎不可行。 我有2个问题

  1. 如何处理多个课程的网址,而无需编写 数百routeprovider重复代码的行?
  2. 因为我打算 使这个CRUD系统小CMS这种设置,是否有可能 还加入了新的课程,每次(如 Drupal和WordPress的是如何管理它)时自动生成的网址?

我很苦恼这个问题。我希望我已经提供了足够的细节来回答这个问题,或者请让我知道,以便我可以提供更多细节。提前致谢!

回答

0

也许这样?:

.when('/courses', 
     { 
      templateUrl: '/partials/coursesList', 
      controller: 'CoursesListCtrl' 
     } 
    ) 
    .when('/courses/:courseNumber', 
     { 
      templateUrl: '/partials/singleCourse', 
      controller: 'SingleCourseCtrl' 
     } 
    ) 
0

既然你标记的Node.js的问题,并表示,该Express.js办法做到这一点:

创建路由器和配置它

var CoursesListCtrl = require('./CoursesListCtrl'); 

var router = express.Router(); 
router.get('/courses', CoursesListCtrl.getAll); 
router.get('/course/:id', CoursesListCtrl.getById); 

创建应用程序,将路由器注册为中间件并开始监听

var app = express(); 
app.use(router); 
app.listen(3000); // 3000 is the port you are listening to 

CoursesListCtrl可能看起来像

module.exports = { 
    getAll: function(req, res){ 
     /** Get all courses from db */ 
     res.status(200).send(courses); 
    }, 
    getById: function(req, res){ 
     var courseId = req.params['id']; 
     /** Get course from db by id */ 
     res.status(200).send(course); 
    } 
} 
0

您所使用的方法是旧事。 Angular现在提供了$ stateProvider服务,通过它你可以创建状态,为每个url生成状态提供一种更简单的方式,并且状态之间的切换更容易,因为你不需要每次都记住完整的url。您需要添加angular-ui-router库。

var app = angular.module('myApp', ['ui.router']); 
app.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 
    .state('login', { 
    url: '/login', 
    templateUrl: '/login/login.html', 
    controller: 'loginController', 
    }) 
    .state('reset', { 
    url: '/reset-password', 
    templateUrl: '/login/reset.html', 
    controller: 'resetController',  
    }) 

}) 

然后在控制器,就可以轻松切换使用$状态的状态服务是这样的:

app.controller('resetController',['$state',function($state) { 
    $state.go("login");  
    } 
]);