此时,我的代码看起来像这样:
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/alumns', {
templateUrl: 'views/alumn.html',
controller : "AlumnoListController",
controllerAs : "vm",
resolve : { alumnoDMResolve : function(AlumnosResource) {
return AlumnosResource.refreshData().then(function (result) {
return (result);
});
}
...
非常典型。但是使用这种风格,我的控制器的整个初始化结束于应用程序的配置块。将此数字乘以数十个控制器,我在应用程序配置块中留下了太多(在我看来)代码,这很难读取/维护。
是否有可能使这方面更有条理? 像(这显然不起作用):
resolve : { alumnoDMResolve : vm.resolveFn }
在我看来,相对于控制器初始化的代码最好放在控制器本身,但我不确定这是否可行。
感谢。
答案 0 :(得分:0)
1)此块:
$routeProvider.when('/alumns', {
templateUrl: 'views/alumn.html',
controller : "AlumnoListController",
controllerAs : "vm",
resolve : { alumnoDMResolve : function(AlumnosResource) {
return AlumnosResource.refreshData().then(function (result) {
return (result);
});
}
可以这样写:
$routeProvider.when('/alumns', {
templateUrl: 'views/alumn.html',
controller : "AlumnoListController",
controllerAs : "vm",
resolve : { alumnoDMResolve : alumnoDMResolve }
}
function alumnoDMResolve(AlumnosResource) {
return AlumnosResource.refreshData().then(function (result) {
return (result);
});
}
这让它更具可读性。 您还可以在不同的路由中解析相同的功能,避免代码重复。
当然这取决于你的目标。
解析路线配置通常用于允许/拒绝手头路线的输入
或者在进入视图之前为视图准备数据。
如果您的用例不是以上任何一种,请不要使用路由解析并在您的控制器内调用您的服务。