1. ホーム
  2. angularjs

[解決済み] 方法 $state.go()

2022-01-25 20:58:43

質問

私の $stateProvider ですか?

$stateProvider
.state('home', {
    url : '/',
    templateUrl : '/admindesktop/templates/main/',
    controller : 'AdminDesktopMainController'
}).state('company', {
    url : '/company',
    templateUrl : '/admindesktop/templates/grid/',
    controller : 'CompanyGridController'
}).state('company.detail', {
    url : '/{id:\d+}', //id is 
    templateUrl : '/admindesktop/templates/company/detail/',
    controller : 'CompanyDetailController'
});

会社」ステートでは動作しますが(ui-srefを使用しています)、このコードは動作しません(「会社」ステートから呼び出されます)。

$state.go('.detail', {
    id: $scope.selectedItem.id //selectedItem and id is defined
});

公式ドキュメントやStackOverflowの回答を読みましたが、解決策は見つかりませんでした。ui-srefは使用できず、ui-gridを使用し、編集のためにテーブルから1行を選択すると新しい状態が開かれます。

何が間違っているのでしょうか?

どうすればいいですか?

常に機能するのは、完全な状態定義です。

// instead of this
// $state.go('.detail', {
// use this
$state.go('company.detail', {
    id: $scope.selectedItem.id //selectedItem and id is defined
});

ドキュメントには、以下のオプションが定義されています。 しかし、それらは現在の状態に依存します。

<ブロッククオート

になります。 文字列
絶対的な状態名または相対的な状態パス。いくつかの例を示します。

  • $state.go('contact.detail') - contact.detailの状態に移動します。
  • $state.go('^') - 親の状態へ移動します。
  • $state.go('^.sibling') - 兄弟関係にある状態に移動します。
  • $state.go('.child.grandchild') - 孫の状態へ移動します。