2013-12-12 13 views
5

ギャラリーはhttp://pinterest.comのように見えます。 Pinterestでは、ピンをクリックすると、表示していたギャラリーの上部にピンページが表示されます。 URLはピンのURLに変更され、詳細の後ろにギャラリーに関する情報は含まれません。 「X」または背景をクリックすると、リロードせずにブラウズしていたギャラリーに戻ることができます。pinterestのような角度UIルータのモーダル

これをUI-Routerでどのように複製できますか?

ニーズ:詳細URLが(ブックマークやリンクから)寒い入力された場合、同じ内容が、すべての場合

  • で同じ内容のURLにいくつかの異なるギャラリー
  • スイッチ上でモーダル

    • 表示空の灰色の背景を背景に表示して閉じることができます。

    ありがとうございました! angular-ui-router's FAQから

  • 答えて

    3

    $stateProvider.state("items.add", { 
        url: "/add", 
        onEnter: function($stateParams, $state, $modal, $resource) { 
         $modal.open({ 
          templateUrl: "items/add", 
          resolve: { 
           item: function() { new Item(123).get(); } 
          }, 
          controller: ['$scope', 'item', function($scope, item) { 
           $scope.dismiss = function() { 
           $scope.$dismiss(); 
           }; 
    
           $scope.save = function() { 
           item.update().then(function() { 
            $scope.$close(true); 
           }); 
           }; 
          }] 
         }).result.then(function(result) { 
          if (result) { 
           return $state.transitionTo("items"); 
          } 
         }); 
        } 
    }); 
    

    それはモーダルのUI-ブートストラップに依存します。

    fancyboxまたは別のライトボックスを使用する場合は、同様の方法を使用できます。 onEnterコールバックを使用してライトボックスを初期化し、終了時に親ステートに移行します。 (また、ライトボックスを閉じずに移行する場合は、onExitコールバックを追加することもできます)

    +1

    解決策と$ scope.saveの部分はわかりません。これにはより簡単で基本的な解決策がありますか? –

    +0

    @DiodeDanこれは、アイテムを更新するために使用されるモーダルのコード例です。そのため、他の場合には適用されない要素がいくつかあります。 '$ scope.save'はモーダルの保存ボタンの背後にある機能です。 'resolve'は物事をコントローラにローカルプロパティとして追加するためのものです(関連アイテムなど)。彼らは必要がない場合は省略することができます。 – towr

    +0

    return $ state.transitionTo( "items"); 'で前の状態に戻す方法はありますか?ウェブサイトのヘッダーにあるボタンを想像してください。このボタンはモーダルボックスを開き、このモーダルボックスはウェブサイトのどの状態でも開くことができます。ユーザーが元に戻すべき特定の状態を選択するのではなく、状態が以前の状態に戻るのは意味がありませんか?これに続いて、モーダルのURLを前の状態のURLに継承させることは理にかなっていますか? – CMCDragonkai

    関連する問題