使用带有angularjs的stateparams遇到麻烦

时间:2014-04-02 14:08:42

标签: angularjs routing

nHello,

我正在尝试使用路由器中的参数,如下所示:

我的网址在我的html文件中调用:

<a href="#/itemlist/{{hikelist.id}}">Edit</a>

我的路由器:

packApp
    .config(['$routeProvider', '$httpProvider', '$translateProvider', '$stateParams',
        function ($routeProvider, $httpProvider, $translateProvider, $stateParams) {
            $routeProvider
                .when('/itemlist/:listId', {
                    templateUrl: 'views/itemlists.html',
                    controller: 'ItemlistController',
                    resolve:{
                        resolvedHikelist: ['Hikelist', function (Hikelist,$stateParams) {
                            return Itemlist.get({id: $stateParams.listId});
                        }]
                    }
                })
        }]);

但是当我运行我的应用程序时,我有这个错误:

  

错误:[$ injector:unpr]未知提供者:$ stateParams

你知道它可以来自哪里吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

您已经包含或使用了ui-router和angularjs标准$ route服务,这些服务不兼容,因为它们都做同样的事情。你必须选择其中之一。

请参阅ui-router上的文档,了解如果采用ui-router方式设置路线的方式。

请查看$routeProvider文档并使用$routeParams代替$stateParams

更新:根据评论,问题是config方法无法注入服务但只能注入提供者,因此您无法在$routeParams方法中注入.config,因此请从中删除。

如果你想注射routeparams,请使用

resolvedHikelist: ['Hikelist','$routeParams', function (Hikelist,$routeParams) {
                            return Itemlist.get({id: $routeParams.listId});
                        }]

答案 1 :(得分:0)

如果你在ItemlistController中使用$ stateParams,请不要忘记将它注入该控制器。