首页  >  问答  >  正文

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,百思不得其解!难道这个变量还能两个不成???

阿神阿神2697 天前563

全部回复(1)我来回复

  • 巴扎黑

    巴扎黑2017-05-31 10:43:00

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

    回复
    0
  • 取消回复