簡體   English   中英

angular.js ui-router 不傳遞數據

[英]angular.js ui-router pass no data

在我的Ionic 應用程序中,我想將參數從一個子視圖傳遞到另一個子視圖。 當我第一次傳遞參數時,它按我的預期工作,但我的問題是,當我返回第一個子視圖然后轉到另一個子視圖時,它會轉到沒有參數的頁面。 我的代碼如下:

index.html(項目/www)

<!DOCTYPE html>
<html>
    <head>
       <link href="lib/ionic/css/ionic.css" rel="stylesheet">
       <script src="lib/ionic/js/ionic.bundle.js"></script>
       <script src="lib/ngCordova/dist/ng-cordova.js"></script> 
       <script src="cordova.js"></script>
       <script src="js/app.js"></script>
       <script src="js/main.js"></script>
       <script src="js/routes.js"></script>
   </head>
    <body ng-app="app" animation="slide-left-right-ios7" >
        <!-- main window -->
        <div>
            <ion-nav-view></ion-nav-view>
        </div>
    </body>

</html>

route.js (www/js/route.js)

angular.module('app.routes', [])
  .config(function($stateProvider, $urlRouterProvider) {
     $stateProvider
        .state('mainUser', {   // first window
           url: '/mainuser',
           templateUrl: 'templates/mainUser.html',
           controller: 'mainCtrl'
        })
       .state('userDrive', {  // second window
          url: '/user_drive',
          params: {
             driveData: null  // parameter send
          },
          templateUrl: 'templates/user_drive.html',
          controller: 'DriveCtrl'
    });
    $urlRouterProvider.otherwise('/mainUser');
 });

模板/mainUser.html

 <ion-side-menus>
    <ion-side-menu-content> 
        <ion-content class="padding" style="background-color:#fff;">        
            <input type="date" ng-model="selectData.selectedDate" placeholder="Date">

            <input type="time" ng-model="selectData.selectedTime" placeholder="Time">
         </ion-content>
         <div class="bar bar-footer">
             <div class="button-bar">
                 <a ui-sref="userDrive({ driveData: selectData })" class="button"> Drive </a> 
            </div>
         </div> 
     </ion-side-menu-content>
  </ion-side-menus>

這里點擊Drive按鈕后,它將正確重定向到帶有參數driveData userDrive子視圖。 但是我回到mainUser然后更改selectData.selectedDateselectData.selectedTime然后再次單擊Drive按鈕,它將重定向到沒有driveData參數的userDrive子視圖。

用戶驅動控制器

.controller('DriveCtrl', function($scope, $state, $stateParams) {       
     console.log("DriveCtrl");  // after redirect to this controller second time
                                // it also print no value
                                // seems might be DriveCtrl is not called
     console.log("$stateParams :  ", $stateParams);       
})

問題是視圖被 Ionic 緩存,在這種情況下控制器只執行一次,所以這就是為什么你只在第一次看到日志。

您需要使用離子視圖事件,這里的文檔: http : //ionicframework.com/docs/api/directive/ionView/

如果您需要單獨發送每個值,則無法將對象發送到狀態參數

@leandro-zubrezki 是對的。 要刪除緩存,您可以在控制器“DriveCtrl”中的任何位置添加。

$scope.$on("$ionicView.afterLeave", function () {
    $ionicHistory.clearCache();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM