注入控制器/ ui-router 1.0.0-beta.3时,$ transition $无效

时间:2017-01-04 17:10:58

标签: angularjs angular-ui-router

在官方文件中:

https://ui-router.github.io/docs/latest/modules/ng1.html,在示例中:

MyController.$inject = ['$transition$'];
function MyController($transition$) {
    var username = $transition$.params().username;
    // .. do something with username
}

$ transition $被注入到控制器中,但是当我使用angular 1.6.1和ui-router 1.0.0-beta.3执行相同操作时,我使用组件架构时出现以下错误: 错误:[$ injector:unpr]未知提供者:$ transition $ Provider

我只能在解决方案中注入$ transition $。

3 个答案:

答案 0 :(得分:1)

来自ui-router Route to Component指南:

  

路由到旧版样式模板/控制器(不路由到   组件),转换可以注入$ transition $。

     

...

     

要在路由的组件上访问“转换”,您应该绑定到   在您的组件中$ $ $。

正如您所指出的,因此只能通过路由到组件时的解析来访问它。这是因为$transition$服务是一个本地范围的注入,不适用于组件。可在问题ui-router#3110

中找到更多信息

答案 1 :(得分:0)

您正在尝试注入'$ transition $'对象,您应该将'$ transitions'服务注入控制器。请参阅本页文档中的区别:

https://ui-router.github.io/ng1/docs/latest/modules/injectables.html#transition

答案 2 :(得分:0)

$transition$不是全局service,而是局部范围的injectablehttps://github.com/angular-ui/ui-router/issues/3110

您可以使用组件输入绑定来解决此问题:

.component('adminApplicants',{
    bindings: { $transition$: '<' },
    templateUrl:'admin.applicants.html',
    controller:function($http,$transition$){
    }
})