2013-12-12 2 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

    resolve 및 $ scope.save 부분을 이해할 수 없습니다. 거기에 더 간단한/기본 솔루션이 있나요? –

    +0

    @DiodeDan 아이템을 업데이트하는 데 사용되는 모달에 대한 예제 코드이므로 다른 경우에는 적용되지 않을 수있는 몇 가지 요소가 있습니다. '$ scope.save'는 모달에 저장 버튼 뒤에있는 기능입니다. 'resolve'는 물건들을 컨트롤러에 로컬 속성으로 추가하기위한 것입니다 (관련된 아이템과 같은). 필요하지 않다면 놓칠 수 있습니다. – towr

    +0

    return $ state.transitionTo ("items");'에서 이전 상태로 다시 전환하는 방법이 있습니까? 웹 사이트 머리글의 단추를 상상해보십시오.이 단추는 모달 상자를 열고이 모달 상자는 웹 사이트의 모든 상태에서 열 수 있습니다. 사용자가 돌아 가야 할 특정 상태를 선택하는 대신 주정부가 이전 상태로 다시 전환하는 것이 합리적이지 않습니까? 이 말을 듣고, 모달의 URL이 이전주의 URL을 상속하는 것이 합리적일까요? – CMCDragonkai

    관련 문제