2014-08-31 102 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