angular.js ui-router没有传递数据

时间:2015-11-26 06:51:04

标签: javascript angularjs ionic-framework angular-ui-router

在我的离子应用中,我想将参数从一个子视图传递到另一个子视图。当我第一次传递参数时,它按照我的预期工作,但我的问题是,当我返回第一个子视图然后转到另一个子视图时,它会转到那个没有参数的页面。我的代码如下:

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按钮后,它会正确地重定向到userDrive子视图,参数driveData。但是,我回到mainUser然后更改selectData.selectedDateselectData.selectedTime,然后再次点击Drive按钮,它将重定向到userDrive子视图,而不会{ {1}}参数。

userDrive 控制器

driveData

3 个答案:

答案 0 :(得分:1)

问题是视图是由Ionic缓存的,在这种情况下控制器只执行一次,这就是为什么你第一次只看到日志的原因。

您需要使用离子视图事件,这里是文档:http://ionicframework.com/docs/api/directive/ionView/

答案 1 :(得分:0)

如果你需要单独发送每个值,你不能将对象发送到状态参数

答案 2 :(得分:0)

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

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