javascript - 在资料录入页面的controller中已更新$rootScope全局变量,但在beforeLeave时访问该变量却仍为旧值?
问题描述
资料录入页面的controller中的代码:
.controller('MobileInputCtrl', function ($scope, $rootScope) { $scope.$watch('myForm.$dirty', function (newVal) { $rootScope.isDirty = newVal; });})
在资料录入页面上放了个测试<p>来显示$rootScope.isDirty全局变量值,证明该变量值已被正确地更新为true。
顶层模块中注册的$ionicView.beforeLeave()事件处理方法代码:
angular.module('app', []).run(function ($ionicPlatform, $rootScope) { $ionicPlatform.ready(function () { $rootScope.$on('$ionicView.beforeEnter', function (event, view) { $rootScope.isDirty = false; }); $rootScope.$on('$ionicView.beforeLeave', function (event, view) { alert($rootScope.isDirty); // 显示仍然为false,百思不得其解! }); });});
在资料录入页面的测试<p>上已经清楚地看到isDirty已被正确地更新为true。但在离开资料录入页面时,看到弹出的提示框显示的isDirty值却仍为false,百思不得其解!难道这个变量还能两个不成???
问题解答
回答1:最好不要哟过ionic,缓存是个大坑。。。