2014-08-31 106 views
0

我正在嘗試使用Angular JS構建一個簡單的應用程序。這裏我有兩個html文件(Login.html & Dashboard.html)。當我運行Login.html時,它運行良好並且在成功登錄時,我需要在登錄時顯示帶有json數據(從服務器)填充的用戶儀表板。Angular js從登錄頁面重定向到儀表板以及json數據

這裏是我的代碼:(main.js)

var app = angular.module('NovaSchedular', []); 
    app.factory('MyService', function() 
    { 
    var savedData = {} 
    function set(data) 
    {  
    savedData = data;  
    } 
    function get() 
    { 
    return savedData; 
    } 

    return { 
    set: set, 
    get: get 
    } 

}); 



function LoginController($scope,$http,MyService,$location) 
{ 

$scope.login = function(str) { 
    console.log(".......... login called......"); 
    var validEmail=validateEmail(email.value); 
    if(validEmail && password.value != ""){ 
    $http.post('./nova/TaskManager/public/user/login?email='+email.value+'&password='+password.value).success(function(data, status) 
    {      
     console.log(data); 
     var result=data.response; 
     console.log(result); 

     if (result=="success") 
     { 
      $scope.userId=data.user_id; 
      $scope.email=data.email; 
      $scope.Name=data.name; 
      $scope.password=data.password; 
      $scope.Type=data.type; 

      console.log("........"+$scope.userId); 
      console.log("........"+$scope.email); 
      console.log("........"+$scope.Name); 
      console.log("........"+$scope.password); 
      console.log("........"+$scope.Type); 

      MyService.set(data); 
      console.log(data); 

      alert(data.message); 


      window.location.href='./Dashboard.html'; 
      //$location.path('./Dashboard.html', data); 

     } 
     else 
      alert(data.message); 
      }); 
     }    
    } 

    } 



function DashboardController($scope,$http,MyService) 
{ 

    $scope.userInfo = MyService.get();  

} 

點此登錄成功後,我收到的LoginController下的服務器響應(JSON數據)好。現在,我需要在儀表板頁面上提供這些數據,以便儀表板可以填充相應的用戶數據。

我通過嘗試此:

window.location.href='./Dashboard.html'; 
    //$location.path('./Dashboard.html', data); 

但它並沒有爲我工作。它重定向到Dashboard.html,但不包含我需要從LoginController傳遞到DashboardController的數據。因此,它可用於Dashboard.html頁面。

在控制檯上看到Dashboard.html時,它是空的json在那裏顯示。

不知道缺什麼。爲什麼它沒有傳遞數據。

任何建議,將不勝感激。

回答

0

試試這個控制器代碼:

app.controller('LoginController' function($scope,$http,MyService,$location) 
{ 

$scope.login = function(credential) { 
    console.log(".......... login called......"); 
    var validEmail=validateEmail(credential.email); 
    if(validEmail && credential.password!= ""){ 
     MyService.login(credential); 
    } 
    } 
    }); 

這:

app.controller('DashboardController',function($scope,$http,MyService) 
{ 

    $scope.userInfo = MyService.getDashboardData();  

}); 

MyService.js:

var app = angular.module('NovaSchedular', []); 
    app.factory('MyService', function() 
    { 
    var dashboardData; 
    var obj={ 
     login:function(credential){ 
     $http.post('./nova/TaskManager/public/user/login?email='+credential.email+'&password='+credential.password).success(function(data, status, headers) { 
     dashboardData=data; 
     window.location.href='./Dashboard.html'; 
     }) 
     .error(function(data, status, headers, config) { 
     console.error('error in loading'); 
     }); 
     }, 
    getDashboardData:function(){ 
    return dashboardData; 
    } 
    } 

    return { 
    login:obj.login, 
    getDashboardData:obj.getDashboardData 
    } 

}); 
+0

它仍然不工作。 – NawazSE 2014-09-01 05:13:17

+0

使用此代碼。我認爲它會工作 – 2014-09-01 06:29:42

+0

沒有這個代碼不起作用。 – NawazSE 2014-09-01 07:45:35