在我的离子应用中,我想将参数从一个子视图传递到另一个子视图。当我第一次传递参数时,它按照我的预期工作,但我的问题是,当我返回第一个子视图然后转到另一个子视图时,它会转到那个没有参数的页面。我的代码如下:
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.selectedDate
和selectData.selectedTime
,然后再次点击Drive
按钮,它将重定向到userDrive
子视图,而不会{ {1}}参数。
userDrive 控制器
driveData
答案 0 :(得分:1)
问题是视图是由Ionic缓存的,在这种情况下控制器只执行一次,这就是为什么你第一次只看到日志的原因。
您需要使用离子视图事件,这里是文档:http://ionicframework.com/docs/api/directive/ionView/
答案 1 :(得分:0)
如果你需要单独发送每个值,你不能将对象发送到状态参数
答案 2 :(得分:0)
@ leandro-zubrezki是对的。要删除缓存,您可以在控制器“DriveCtrl”中的任何位置添加。
$scope.$on("$ionicView.afterLeave", function () {
$ionicHistory.clearCache();
});