AngularJS RouteProvider所有路径/路径/ URL的单个条件

时间:2014-09-16 03:50:29

标签: javascript angularjs route-provider

我在用户点击链接时使用$ routeProvider更改页面(telmplate)和控制器。

像这样:

$routeProvider.when('/profile/', {
        templateUrl: '/app/views/profile.html',     
        controller: 'ProfileCtrl'
    }).when('/timeline/', {
        templateUrl: '/app/views/timeline.html',        
        controller: 'TimelineCtrl'
    }).when('/chat/:username', {
        templateUrl: function(param){
          if(param){
            return '/app/views/chat.html?' + param; 
          }
           return '/';
        },      
        controller: 'ChatCtrl'
    }).otherwise({ redirectTo: '/' });

问题是我的应用程序上有很多页面,我需要重复注册.when条件下的每个网址,而模板网址和控制器名称是根据链接路径加载的。

我的问题是:我可以将条件中的所有条件概括为单个when语句吗?

像这样:

$routeProvider.when(url, {
    templateUrl: '/app/views/' + url + '.html',     
       controller: url + 'Ctrl'
});

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

angular.module('myapp', ['myapp.filters', 'myapp.services', 'myapp.directives']).
    config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/page/:name', {
        templateUrl: function(urlattr){
            return '/pages/' + urlattr.name + '.html';
        },
        controller: urlattr.name+'Ctrl.js'
      });
     }
]);

请试一试。在这种情况下,我假设您的html页面名称与Controller名称相同,并以“Ctrl”作为后缀。