【问题标题】:AngularJS : Can't inject $stateParams into configAngularJS:无法将 $stateParams 注入配置
【发布时间】:2017-11-07 11:54:51
【问题描述】:

我正在尝试访问路由器配置文件中 stateParams 对象的属性,但每当我尝试导入 $stateParams 服务时都会出错。

 (function() {
    'use strict';
    angular
        .module('propertyDetails')
        .config([
            '$stateProvider',
            '$stateParams',
            routeConfig
        ]);

    function routeConfig($stateProvider, $stateParams) {
        console.log($stateParams)
    }
})();

$stateProvider 被导入没有任何问题,但对于 stateParams 我收到此错误:

Error: [$injector:modulerr] Failed to instantiate module propertyDetails due to:
Error: [$injector:unpr] Unknown provider: $stateParams

【问题讨论】:

  • 你不需要注入它,你可以写controller: function ($stateParams) {...}或任何你需要的东西(对于每个state
  • 如果我直接写进去,它会显示为未定义

标签: angularjs


【解决方案1】:

这是不可能的,因为配置功能在配置阶段运行when no services are available。这是文档中的插图:

你的方法有问题。为什么你需要在模块config 块中直接访问$stateParams?您可以在定义如下状态时将其注入控制器:

(function () {
    'use strict';
    angular
        .module('propertyDetails')
        .config([
            '$stateProvider',
            routeConfig
        ]);

    function routeConfig($stateProvider) {
        $stateProvider
            .state('property.detail', {
                url: "/property/:propertyId",
                templateUrl: 'property.detail.html',
                controller: function ($stateParams) {
                    console.log($stateParams);
                }
            });
    }
})();

【讨论】:

    【解决方案2】:

    你可以直接注入到你的控制器的main函数中

    angular
            .module('propertyDetails')
            .controller('TestController', TestController)
    
    TestController.$inject = ['$scope',  '$stateParams'];
    function TestController($scope, $stateParams) {
    //your code
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多