Angular $ routeProvider解析。如何提高可维护性/可读性?

时间:2016-01-30 12:15:36

标签: angularjs

此时,我的代码看起来像这样:

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 }

在我看来,相对于控制器初始化的代码最好放在控制器本身,但我不确定这是否可行。

感谢。

1 个答案:

答案 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);
  });
}

这让它更具可读性。 您还可以在不同的路由中解析相同的功能,避免代码重复。

更新

当然这取决于你的目标。

解析路线配置通常用于允许/拒绝手头路线的输入
或者在进入视图之前为视图准备数据。

如果您的用例不是以上任何一种,请不要使用路由解析并在您的控制器内调用您的服务。