0
$ stateParamsを必要とする子状態でいくつかの変数を初期化しようとしています。私は、以下の使用状態を登録したことについては
:
$stateProvider
.state('parent', {
abstract: true,
url: '/parent',
template: '<div ui-view></div>',
controller: 'ParentCtrl',
}).state('parent.child', {
url: '/:id',
templateUrl: 'template.html',
controller: function ($scope) {
$scope.someFunction();
},
});
これは私のコントローラである:
module.controller('ParentCtrl', [
'$scope', '$stateParams',
function ($scope, $stateParams) {
//calling a function in the scope inherited from parent controller
$scope.someFunction = function() {
//$stateParams isn't available.
}
}]);
しかしsomeFunctionは$ stateParams内のparamsと呼ばれたときに定義されていません。
しかし、その代わりにParentCtrl
から関数を呼び出すの私はこのような状態コントローラ内から実行する場合:
$stateProvider
.state('parent', {
abstract: true,
url: '/parent',
template: '<div ui-view></div>',
controller: 'ParentCtrl',
})
.state('parent.child', {
url: '/:id',
templateUrl: 'template.html',
controller: function ($scope, $stateParams) {
//$stateParams is available
},
});
私は$ stateParams上のparamsにアクセスすることができます。
誰かが私の理由を説明できますか?
@RadimKöhler多分、私は$ stateParamsが$ scope継承にどのように関連していたのでしょうか?私の疑問は、$ stateParamsより前に子コントローラによって呼び出された関数がparamsで生成されるという事実に関係しているからです。しかし、私は同じ子コントローラの中でparamsを使うことができます。 – belyid
親ルートにアクセスしようとしていますか?この[SO post](http://stackoverflow.com/questions/28663146/stateparams-in-url-of-abstract-state-ui-router-angularjs)で説明したように、親コントローラで$ stateParamsを得ることができます。解決で私は[plunkrを作成しました](http://plnkr.co/edit/vqovhyezWkIUMJGHlZ2j?p=preview)親コントローラを含むようにこれを拡張しました - [ここ](http://plnkr.co/edit/vqovhyezWkIUMJGHlZ2j?p=preview )、親コントローラのstateParamsに問題なくアクセスできます。あなたは何かを見落としている。 – Mahesh