2017-04-16 21 views
1

私はangularjsを持つ単一ページアプリケーションを構築する際に問題に直面しています。私のアプリはログインページを持っています。認証が成功すると、appは$ scopeからいくつかのデータが表示されるホームページにルーティングされます。ただし、ログイン後に表示されるデータはありません。

私は成功して自宅にルーティングする際に記号をlocation.pathを使用しています。参考までに、私は "$ scope.homePageDetails"をhome.htmlに印刷しようとしていますが、何も印刷されません。誰かが言うことができます、私は何をやっていると私はこの問題を解決することができますか?

index.htmlファイル:

<html> 
    <body> 
    <nav> 
    <ul> 
    <li ng-hide="isUserLoggedIn"><a href="#login">  <span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
    </ul> 
    </nav>  

<div ng-view></div> 
</body> 
</html> 

login.htmlとファイル:

<div> 
<form class="form-signin"> 
    <input type="text" class="form-control" placeholder="Email" ng-model="userDetails.userName" required autofocus> 
    <input type="password" class="form-control" placeholder="Password" ng-model="userDetails.Password" required> 
    <button class="btn btn-lg btn-primary btn-block" type="submit" ng-click="signIn()"> 
Sign in</button> 
</form>    

home.html:

<p> {{homePageDetails}}</p> 

角度モジュールとコントローラ:

app.controller('myCtrl', ['$scope','$http', '$location' function($scope,$uibModal,$http, $location, $window) { 
$scope.signIn = function(){ 

    $http({ 
    url: "http://localhost:3050/postSignIn", 
    method: "POST",   
    headers: {'Content-Type': 'application/json; charset=utf-8' 
     }, 
    data: $scope.userDetails 
    }) 
    .then(function(response){ 
      console.log('resp is',response); 
      $scope.isUserLoggedIn = true;    
      $location.path('/home'); 

       $http({ 
        url: "http://localhost:3050/getHomePageDetails", 
        method: "GET",   
        headers: {'Content-Type': 'application/json; charset=utf-8' 
        }   
       }) 
       .then(function(response){      
        $scope.homePageDetails = response.data.slice(0); 
       }, function(response){ 
       // failure callback 
       console.log('failure in getting homePageDetails',response); 
       });     
     },   
     function(response){ 
      // failure callback 
      console.log('failure is',response); 
     });  
} 
}]); 

モジュール:

var app = angular.module('myApp', ['ngRoute']); 

ルータ:

app.config(function ($routeProvider, $locationProvider, $httpProvider) { 

$routeProvider.when('/home', 
{ 
    templateUrl: 'home.html', 
    controller:  'myCtrl' 
}); 

} 
+0

ログインページのコントローラは何を試すことができますか?あなたは完全なルータコードを提供することができます – Akashii

+0

ホーム画面のスコープは、サインイン画面のスコープと異なる場合があります。 –

+0

@Thanh:コントローラを更新しました。複数のコントローラはありません。私は1つのコントローラしか使用していません。すなわちmyCtrl。 – Bobby

答えて

1

あなたはこの

$routeProvider 
.when('/home', 
{ 
    templateUrl: 'home.html', 
    controller:  'myCtrl' 
}) 
.when('/login', 
{ 
templateUrl:'login.html', 
controller:'myCtrl' 
}) 
関連する問題