Angular-Ui路由器外部服务正在解决

时间:2017-12-28 10:36:20

标签: angularjs angular-ui-router

我正在尝试访问外部服务中的$transition$对象以解析值。

我的州定义如下:

$stateProvider.state(
  'detailView.showDocument', {
    url: '/:documentId',
    views: {
      'sidebar': {
        component: 'thumbnailView',
      },
      'main': {
        component: 'mainView',
      }
    },
    params: {
      document: null
    },
    resolve: {
      document: 'resolveDocumentService',
    }
  }
);

我的服务如下所示:

service.$inject =[
    '$transition$',
];

function service(
    $transition$
) {
    // do something 
}

这会产生错误,因为无法注入$transition$对象。 然后我找到了使用$uiRouterGlobals的解决方案,但这对我来说似乎有点奇怪。

是否有任何理由在服务中无法使用$transition$对象来解析转换的值?

2 个答案:

答案 0 :(得分:0)

除了@estus'评论,您可以按如下方式更改配置:

resolve: {
  document: [ '$transition$', function($transition$) {
    // write your logic here as `$transition$` will be available here
  } ]
}

此函数是可注入的,UI路由器会自动将所需的依赖项注入其中。另外,由于您正在配置特定状态,因此不会遇到XY问题。

答案 1 :(得分:0)

是的,我的错误是服务当然是单身人士。使用普通函数解决它而不是使用服务密钥。