在资料录入页面的controller中已更新$rootScope全局变量,但在beforeLeave时访问该变量却仍为旧值?

资料录入页面的controller中的代码:

.controller("MobileInputCtrl", function ($scope, $rootScope) {
  $scope.$watch("myForm.$dirty", function (newVal) {
    $rootScope.isDirty = newVal;
  });
})

在资料录入页面上放了个测试<div>来显示$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,百思不得其解!
    });
  });
});

在资料录入页面的测试<div>上已经清楚地看到isDirty已被正确地更新为true。但在离开资料录入页面时,看到弹出的提示框显示的isDirty值却仍为false,百思不得其解!难道这个变量还能两个不成???

阅读 2.2k
1 个回答

最好不要哟过ionic,缓存是个大坑。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题