2017-04-24 1 views
0

ダッシュボードに10個の同様のボックスがあり、それぞれが特定のデバイスに異なる値を表示しています。ユーザーがそれぞれをクリックすると、それらのデバイスに関する詳細情報を示す新しいページにそれらを誘導する必要があります。paramsを以前の状態から新しい状態に角度で渡すには?

すべてのデバイスの2番目のページのレイアウトは同じです。 $範囲を更新するだけです。

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

認証をテストする方法が必要な場合は、解決策が見つからない場合はStack Overflowを検索して質問することをおすすめします。いろいろな方法があり、どの認証方法を使用しているかによって大きく異なります。 このメソッドがどれほど安全であるかを尋ねるなら、イベントを監視して 'preventDefault'を使ってビューのロードを停止することができます。 残念ながら、私は多くのセキュリティのためにセキュリティについてよく分かりません。 –

+1

情報ありがとうございます。 – DragonKnight

関連する問題