2017-04-24 29 views
0

我的儀表板中有10個類似的框,每個框都顯示特定設備的不同值。當用戶點擊每個設備時,我必須將它們引導到顯示關於該設備的更多信息的新頁面。如何將params從以前的狀態傳遞到角度上的新狀態?

所有設備的第二頁的佈局是相同的。我只需要更新$範圍。

什麼是乾淨的角度的方式來實現這一點,最好不向網址添加查詢?

我正在使用$ stateProvider,並試圖使它與onEnter()一起工作,但還不能。

+0

請添加涵蓋您所描述內容和/或創建Plunker示例的代碼。 – eminlala

回答

1

$stateParams應該做的伎倆。要使用它,您需要在路由時指定參數。例如:

(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 
     } 
     }); 
    } 

然後使用$state.go('stateName', { param: param }),例如(以下前面的例子):

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

最後,你做一個$stateParams.param訪問參數目的地控制器內,或在先前示例的情況下,$stateParams.user

+0

感謝您的解決方案。你會補充說,如果新頁面需要用戶進行身份驗證? – DragonKnight

+1

如果你想要一種測試身份驗證的方法,我建議你搜索Stack Overflow並詢問它是否找不到解決方案。有很多方法,它高度依賴於你使用的auth方法。 現在,如果您詢問此方法的安全性如何 - 您仍然可以監視事件並使用'preventDefault'來停止加載視圖。 不幸的是,我對安全知之甚少,無法獲得更多幫助。 –

+1

感謝您的信息。 – DragonKnight

相關問題