2017-04-24 1 views
0

내 대시 보드에 10 개의 유사한 상자가 있으며 각 장치마다 특정 장치에 대해 다른 값이 표시됩니다. 사용자가 각각을 클릭하면 해당 장치에 대한 더 많은 정보를 보여주는 새 페이지로 안내해야합니다.params를 이전 상태에서 새로운 상태로 각도로 전달하는 방법은 무엇입니까?

모든 장치에 대한 두 번째 페이지의 레이아웃은 동일합니다. $ 범위를 업데이트하면됩니다.

URL을 쿼리하지 않는 것이 좋을까요?

$ stateProvider를 사용하고 있으며 onEnter()와 함께 작동 시키려고했지만 아직 할 수 없습니다.

+0

묘사 한 내용을 다루는 코드를 추가하거나 플 런커 예제를 작성하십시오. 솔루션에 대한 감사합니다. – eminlala

답변

1

$stateParams 트릭을해야합니다. 이를 사용하려면 라우팅 할 때 매개 변수를 지정해야합니다.

그럼 당신은 예를 들어, $state.go('stateName', { param: param }) 사용
(function(){ 
    'use strict'; 

    angular 
    .module('app') 
    .config(ApplicationConfig); 

    //set dependencies for ApplicationConfig 
    ApplicationConfig.$inject = ['$stateProvider']; 

    function ApplicationConfig($stateProvider){ 
     //Define route states 
     $stateProvider 
     .state('main', { 
     abstract: true, 
     url: '/main', 
     templateUrl: 'pages/main/main.html', 
     controller: 'MainCtrl', 
     controllerAs: 'main', 
     cache: true, 
     params: { 
      user: null 
     } 
     }); 
    } 

(다음 앞의 예) : 예를 들어 마지막으로

//Inside your original controller 
function goToMainPage(param) { 
    $state.go('main', { user: param }); 
} 

, 당신은에하는 $stateParams.param를 수행하여 대상 컨트롤러 내부의 매개 변수에 액세스하거나 이전 예제의 경우, $stateParams.user.

+0

새 페이지에 사용자를 인증해야하는 경우 추가할까요? – DragonKnight

+1

인증을 테스트하는 방법을 원한다면 스택 오버플로를 검색하고 해결책을 찾지 못하도록 요청하는 것이 좋습니다. 여러 가지 방법이 있으며 사용하는 인증 방법에 따라 크게 다릅니다. 이 메소드가 얼마나 안전한지 묻는다면, 여전히 이벤트를 모니터하고'preventDefault'를 사용하여 뷰의로드를 멈출 수 있습니다. 불행히도 나는 더 많은 도움이되는 보안에 대해 많이 모른다. –

+1

정보 주셔서 감사합니다. – DragonKnight

관련 문제