0

所以我试图id从 url 参数中提取一些。

这是我的状态:

$stateProvider
    .state('parent', {
        url: '/parent',
            templateUrl: 'path/to/parent.html',
            controller: 'lolController'
        })
    .state('parent.child', {
        url: '/child-profile/:id',
        templateUrl: 'path/to/child.html',
        resolve: {
            someId: function  ($stateParams) {
                // I cant print the id from here
                console.log("PARAMS", $stateParams.id)
                return $stateParams.id;
            }
          },
    })

控制器

.controller('lolController', 
    ['$scope', 'someId', function ($scope, someId) {

     $scope.someId = someId;

}])

但是每当我尝试访问 url 时,/parent/child-profile/123abc我都会收到错误Unknown provider: someId See error here。.

我该如何解决?谢谢。

编辑

Jay Shukla提供的答案帮助我得到了这个想法。

parameterundefined因为我在实际调用包含来自其 url 的值的子状态之前在父状态上声明了控制器。这是我在 Jay Shukla 的帮助下想出的一个简单解决方案。

$stateProvider
    .state('parent', {
        url: '/parent',
            templateUrl: 'path/to/parent.html',
        })
    .state('parent.child', {
        url: '/child-profile/:id',
        templateUrl: 'path/to/child.html',
        controller: 'lolController'
    })

controller从父状态中删除了声明并将其移至子状态。因为在我的情况下,父状态的模板只包含一个<div ui-view></div>.

这个想法是:

只有状态是嵌套的,但两个 html 是分开的,因此控制器模型不会被继承 - Jay Shukla

每个状态都可以有自己的控制器。

请添加/编辑更多以改进此问题。

4

1 回答 1

3

尝试注入,$stateParams然后您将在该对象中获得 id。

像这样

.controller('lolController', 
    ['$scope', '$stateParams', function ($scope, $stateParams) {

     $scope.someId = $stateParams.id;

}])

您还可以通过以下不同方式定义参数

url: '/child-profile/:id', // Inside stateparams you will get id as key
OR
url: '/child-profile/{id}',
OR
url: '/child-profile/:{id:int}', // Id with integer value
于 2015-11-30T08:29:21.910 回答