我有一条类似的路线,应根据参数是否为数字来加载不同的 View 和 Controller 。例子:

  • /artists/2应该带有 View ArtistsIndexController /www/artists/index.html
  • /artists/name应该带有 View ArtistsProfileController /www/artists/profile.html

  • 理想情况下,我会使用类似:
    $routeProvider.when("/artists/:page", {
      templateUrl: "/www/artists/index.html",
      controller: "ArtistsIndexController"
    });
    
    $routeProvider.when("/artists/:name", {
      templateUrl: "/www/artists/profile.html",
      controller: "ArtistsProfileController"
    });
    

    其中:page是数字,而:name不是数字。

    注意,我看到了一个相关的github issue(可从this question找到),但想知道是否有解决方案或首选解决方案。

    最佳答案

    另一种方法是使用ui-router,它支持路由的正则表达式(在许多其他事物中),这将允许:

    $stateProvider.state("artists-index", {
      url: "/artists/{page:[0-9]*}",
      templateUrl: "/www/artists/index.html",
      controller: "ArtistsIndexController"
    });
    
    $stateProvider.state("artists-profile", {
      url: "/artists/{name}",
      templateUrl: "/www/artists/profile.html",
      controller: "ArtistsProfileController"
    });
    

    关于javascript - AngularJS正则表达式路由类似的URL来加载不同的 Controller 和 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18131834/

    10-08 21:45