2016-11-30 27 views
1

我正在使用ionic創建移動應用程序,並且正在嚮應用程序中實施非常輕量級的身份驗證(無安全性)。基本上,當用戶在提交電子郵件和密碼後點擊登錄按鈕時,他們的信息將使用POST請求對數據庫進行檢查。現在我的問題是,一旦我確認用戶的信息在數據庫中,我希望將該響應對象從POST傳遞到配置文件頁面,然後可以顯示用戶的配置文件信息。我如何將信息(響應對象)從一個控制器傳遞到另一個頁面,以便它可以顯示在屏幕上?下面的代碼:如何將POST請求的結果傳遞給Ionic和Angular中的另一個頁面

app.js

//Login view 
    .state('signin', { 
     url: '/signin', 
     templateUrl: 'templates/signin.html', 
     controller: 'LoginCtrl' 
    }) 

    // Profile view: 
    .state('tab.profile', { 
    url: '/profile', 
    views: { 
     'tab-profile': { 
     templateUrl: 'templates/tab-profile.html' 
     controller: 'ProfileCtrl' 
     } 
    } 
    }) 

controllers.js:

$http.post(url, obj) 
     .success(function (res, status, headers, config) { 
      if (res == null){ 
      console.log("bad login"); 
      } 
      else{ 
      // $scope.response = res; 
      console.log(res); 
      console.log("post successful"); 
      $state.go('tab.profile',{response:res}); 
      } 
     }); 

製表profile.html

<ion-view view-title="Profile"> 
    <ion-content> 
    <ion-list> 
     <ion-item >{{response.name}}</ion-item> 
    </ion-list> 
    </ion-content> 
</ion-view> 

回答

1

您可以創建一個service這將存儲數據傳遞給其他controllers

讓我給個例子:

var yourApp = angular.module('fooApp', []); 

yourApp.factory('yourFactory', function() { 
    var items = []; 
    var storeService = {}; 

    storeService.addItem = function(item) { 
     items.push(item); 
    }; 
    storeService.removeItem = function(item) { 
     var index = items.indexOf(item); 
     items.splice(index, 1); 
    }; 
    storeService.items = function() { 
     return items; 
    }; 

    return storeService; 
}); 

function MyCtrl($scope, yourFactory) { 
    $scope.newItem = {}; 
    $scope.yourFactory = yourFactory;  
} 
+0

這似乎是工作,但是當我注入服務爲我的控制器,它改變了我的頁面的外觀,使得頂部選項卡(我用的標籤結構)放在我的頭上,你知道爲什麼會發生嗎? – user2466886

+0

@ user2466886只是調試使用Google Chrome和使用關鍵字「調試器」發生的情況。請參閱以下文章http://stackoverflow.com/questions/5156388/how-to-set-breakpoints-in-inline-javascript-in-google-chrome – StepUp

+0

我能夠實現執行發佈請求的服務並返回該對象。但是,在我的登錄頁面中,用戶提供了用於發佈請求的登錄信息。在我的個人資料頁面中,如何通過登錄信息進行傳輸,以便我可以再次使用它來發出另一個郵政請求。我想提出另一個請求的原因是因爲我想顯示配置文件信息。 – user2466886

1

您可以在路線的definiton定義PARAMS 。查看ui-router模塊的文檔(https://github.com/angular-ui/ui-router/wiki/URL-Routing)以查看正確的語法。

爲了在兩個控制器之間傳遞更復雜的對象,我會使用一個服務。在POST解決後,狀態改變後,Xou可以在服務中設置數據,並在另一個控制器中讀取數據。閱讀此鏈接可查看示例Passing data between controllers in Angular JS?。希望這有助於:)

相關問題