1. ホーム
  2. angularjs

[解決済み] どのように$state.goにパラメータを追加しますか?

2022-02-26 17:14:17

質問

編集フォームで、ユーザーが1つの"オークション"を更新できるようにしています。更新関数内で$state.go('auctions')を正しく使用して、更新が成功した後にユーザーがオークションビューに誘導されるようにするにはどうしたらよいでしょうか?

あるいは、この $state.go('auctions') にどのようにパラメータを渡せばよいのでしょう。

  // Update auction
  $scope.updateAuction = function(auction){
    auctions.updateAuction(auction, {
      product: $scope.product,
      condition: $scope.condition
    }).success(function() {
      $state.go('auctions');       // I think I need to add auction parameters here 
      ToastService.show('Auction updated');
    });
  };

オークションの$state関数はこんな感じです。

  // state for showing single Auction
  .state('auctions', {
    url: '/auctions/{product}/{id}',
    templateUrl: 'auctions/auction-view.html',
    controller: 'AuctionViewCtrl',
    resolve: {
      auction: ['$stateParams', 'auctions', function($stateParams, auctions) {
        return auctions.get($stateParams.id);
      }]
    }
  })

編集フォームは関連するオークションビューからしかアクセスできないので、オークションはすでにロードされているので、新しいGETリクエストを送らずに$state.goを使う良いオプションがあるのでは?

解決方法は?

$state.go("auctions", {"product": auction.product, "id": auction.id}); 

また、ドキュメントを掲載したリンクもあります。

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options