2016-11-03 1 views
0

リクエストパラメータでjsp body loadに存在する最初のui-srefリンクにユーザーをナビゲートできますか?ページが読み込まれたときにパラメータ付きのUIビューを読み込むことはできますか?

私のコードを共有しています。

なtest.jsp

<body ng-app="myApp"> 
    <nav class="navbar navbar-inverse"> 
     <ul class="nav navbar-nav navbar-right"> 
      <li class="nav-iem"> 
       <a>${clientId}</a> 
      </li> 
      <li class="nav-item"> 
       <a class="nav-link" href="#" ui-sref="dashboard({clientID: ${clientId}})">Dashboard</a> 
      </li> 
      <li class="nav-item"> 
       <a class="nav-link" href="#" ui-sref="clientDetail({clientID: ${clientId}})">Profile</a> 
      </li> 
     </ul> 
    </nav> 

AngularApp.js

var app = angular.module('myApp', ['ui.router','ui.bootstrap']); 
app.config(function($stateProvider, $urlRouterProvider, $locationProvider) { 
    $stateProvider 
    .state('dashboard', { 
     url: '/dashboard/:clientID', 
     resolve: { 
      getList1: [ 'getService', '$stateParams', function(getService, $stateParams) { 
       return getService.getData('/mybackend/url1?clientId=' + $stateParams.clientID); 
      } ] 
     }, 
     templateUrl: '/dashboard.html', 
     controller: 'dashboardCtrl' 
    }) 
    .state('clientDetail', {  
     url: '/clientDetail/:clientID', 
     resolve: { 
      user: [ 'getService', '$stateParams', function(getService,$stateParams) { 
       return getService.getData('/mybackend/url2?clientId=' + $stateParams.clientID); 
      } ] 
     }, 
     templateUrl: '/myProfile.html', 
       controller : 'myProfileCtrl', 
    }) 

私は正常にログインは、その後、私は、バックエンドからのリクエストパラメータとしての私のクライアントIDを受け取ります。しかし、「ダッシュボード」をクリックしない限り、ユーザーはダッシュボードにルーティングされません。

また、私はこのようにそれ以外の場合は使用してみました -

$urlRouterProvider.otherwise(function($injector, $location){ 
    var state = $injector.get('$state'); 
    state.go("dashboard", $location.search()); 
    return $location.path(); 
}); 

しかし、渡さstateParamsが未定義であることを示しています。

私はいくつかの基本的な概念が欠けていると確信していますが、私はGoogleで何か手がかりを見つけることができません。誰も私をここで助けてもらえますか?

答えて

0

あなたは、このような状態パラメータを渡すことができます。

URLは、いくつかの異なるオプションを取ることができ、我々はngRouteのように、URLの基本的なパラメータを設定することができます

$stateProvider 
    .state('inbox', { 
    url: '/inbox/:inboxId', 
    template: '<h1>Welcome to your inbox</h1>', 
    controller: function($scope, $stateParams) { 
       $scope.inboxId = $stateParams.inboxId; 
       } 
}); 

かの場合では:

このアプリは、URLの2番目のコンポーネントとしてclientIdをキャプチャします。たとえば、の場合、ユーザーが/ mybackend/1に移行すると、$ stateParams.clientIdは1になります($ stateParamsは{clientId:1}となります)。ご希望の場合は

我々はまた、別の構文を使用することができます。

url: '/mybackend/{clientId}' 
+0

はい、ダッシュボードをクリックすると正しく動作します。基本的には、test.jspがロードされているときにクリックすることなく、clientIDをパラメータとしてダッシュボードにルーティングする必要があります。 – Miki

+0

あなたは私の与えられた答えから1つのルート状態変化イベントを使用することができます、私は私の答えを更新することができます、私が置くつもりのリンクに従ってください。 – Jigar7521

+0

あなたのリンクを確認しました。私の問題は、$ urlRouterProviderを使用してロードしようとするとclientIDが未定義として渡されるパラメータです。それ以外は、うまくいきます。 – Miki

0

を私は問題を解決しました。理想的な解決策ではありませんが、今のところはうまくいきます。ドキュメントが読み込まれるとすぐに「ダッシュボード」タブでクリックイベントが発生しました。

$(document).ready(function() { 
    $("#navItem1").trigger('click'); 
}) 
関連する問題