如何干净地指定路由的resolve属性

时间:2013-11-20 12:21:15

标签: angularjs angularjs-routing

我想找到一种为路线设置resolve的简洁方法。

从我所看到的有三种主要方法:

  • 声明全局函数(不好)

  • 匿名函数(如果逻辑复杂或者我需要在多个地方使用相同的函数,则会出错)

  • 在控制器功能上设置方法(这对我不起作用,因为我不喜欢将控制器作为单独的函数声明,而是我只做module(...).controller(...);

有没有更好的方法来执行此操作,尤其是如果我需要在类似路由​​之间共享的解析。 (例如/ people和/ people /:personID)

感谢。

1 个答案:

答案 0 :(得分:3)

如何在.constant阶段创建.config并注入它?如果你看AngularJS documentation for .constant,你会发现你可以将函数定义为常量。

所以,你应该可以这样做:

app.constant("Resolver", {
  "MessageUtils": function () {
    return {
      get: function (message) {
        return "MUTIL: " +  message;
      }
    }
  }
});

然后你会用它作为:

app.config(function ($routeProvider, Resolver) {
  $routeProvider.when("/home", {templateUrl: ..., resolve: Resolver, ...})
...

这是一个工作的掠夺者:
http://plnkr.co/edit/psuYHu4rtlp4o42ZgqVs?p=preview

我的angularAMD项目中有类似的请求,我创建了一个名为.route的函数来帮助我在定义路由时设置resolve属性。这是代码的link