2016-08-24 85 views
0

在這種離子應用程序,我想從搜索頁面中輸入數據,並顯示在下一頁的結果。但是,當我嘗試它不會工作。我可以將搜索結果發送到控制檯。並且數據也不會傳遞到下一頁,即使我爲這兩個頁面創建了相同的控制器。請幫我解決這個問題!謝謝!!我如何獲得一個搜索頁面的搜索結果進入下一個頁面,並顯示

這是我的按鈕的代碼( 'searchA' 是包含輸入數據的對象)

<button type="button" class="button button-block button-positive" ng-click="search(searchA)" ui-sref="app.MainSearchResult">Search</button> 

這些是我的狀態(app.js文件)

.state('app.MainSearch', { 
     cache:false, 
     url: '/MainSearch', 
     views: { 
     'menuContent': { 
      templateUrl: 'templates/MainSearch.html', 
      controller: 'MainSearchCtrl' 
     } 
     } 
    }) 

    .state('app.MainSearchResult', { 
    url: '/MainSearchResult, 
    views: { 
    'menuContent': { 
     templateUrl: 'templates/MainSearchResult.html', 
     controller: 'MainSearchResultCtrl' 
    } 
    } 
}) 

這是我的搜索功能( controller.js)

$scope.search = function(searchA){ 

    console.log('No : '+ searchA.emp_EPF); 
    console.log('Name : '+ searchA.emp_Name); 
    console.log('Company :'+ searchA.emp_Comp); 
    //console.log('qualification Type : ' + emp_qualiType); 
    console.log('-------------------'); 

    $http({ 
     method: 'GET', 
     url: 'http://localhost/mas/Search.php', 
     params: {employeeNo : searchA.emp_EPF, 
     employeeName : searchA.emp_Name, 
     employeeCompany : searchA.emp_Comp, 
     employeeBusinessUnit : searchA.emp_BU, 
     employeeTeamName : searchA.emp_Team, 
     employeeSecondaryCompany : searchA.emp_secondmant, 
     employeeRelatedEmployee : searchA.emp_relatedEmp, 
     employeeWorkLevel : searchA.emp_workl, 
     employeeDesignationName : searchA.emp_designation, 
     qualificationType : searchA.emp_qualiType, 
     qualificationField : searchA.emp_qualiField, 
     programName : searchA.emp_progName, 
     serviceProvider : searchA.emp_svcProvider 
     } 
    }).then(function successCallback(response) { 
     $scope.searchResults = response.data['records']; 
     console.log('success :'+ JSON.stringify($scope.searchResults));  

    }, function errorCallback(response) { 
     console.log('error',response); 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
    }); 

    angular.copy($scope.resetData,searchA); 

    } 

這是我的下一頁的結果集視圖。

<ion-list ng-repeat="x in searchResults"> 
    <ion-item class="item item-text-wrap" > 
     <div > 
     <h2>{{x.employeeNo}}</h2> 
     <p>{{x.employeeName}}</p> 
      <div> 
      <a class="button button-outline button-medium button-positive" >Edit</a> 
      </div> 
     </div> 
    </ion-item> 
    </ion-list> 

請幫助我做到這一點! 謝謝!

+0

你有什麼問題不能理清?什麼是控制檯輸出? – boroboris

+0

當我把結果傳遞給相同頁面(搜索頁面)的控制檯時,它顯示爲它應該作爲JSON對象。 我不能把搜索到的查詢的結果集到下一頁(搜索結果頁面)! 我需要知道如何將這些結果帶到下一頁(搜索結果頁面) –

回答

1

一個簡單的解決方案是有一個工廠返回一個對象,讓你的兩個頁面上的控制器與基準攜手同對象

var myApp = angular.module('myApp', []); 
myApp.factory('Data', function(){ 
    //Make your search request here. 
    return Data; 
}); 
myApp.controller('MainSearchCtrl', function($scope, Data){ 
    $scope.searchResults = Data; 
}); 
myApp.controller('MainSearchResultCtrl', function($scope, Data){ 
    $scope.searchResults = Data; 
}); 

交換意見/示波器/控制器之間的數據最簡單的方法,最簡單的方法是將其存儲在$rootScope中。

在MainSearchCtrl,

$scope.searchResults = response.data['records']; 
$rootscope.searchResults = $scope.searchResults; 

您可以使用SearchResult所頁面上的同一個變量爲好。

+0

非常感謝!與rootScope工作! :) –

相關問題