我在用户点击链接时使用$ 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'
});
提前致谢:)
答案 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”作为后缀。