[英]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.selectedDate
和selectData.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.