0

当用户单击链接时,我正在使用 $routeProvider 更改页面(模板)和控制器。

像这样:

$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: '/' });

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

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

像这样:

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

提前致谢 :)

4

1 回答 1

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 页面名称与控制器名称相同,并且后缀为“Ctrl”。

于 2014-09-16T04:04:46.263 回答