Rumah  >  Soal Jawab  >  teks badan

javascript - Pembolehubah global $rootScope telah dikemas kini dalam pengawal halaman kemasukan data, tetapi pembolehubah itu masih nilai lama apabila diakses semasa beforeLeave?

Kod dalam pengawal halaman kemasukan data:

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

Letakkan ujian<p> pada halaman kemasukan data untuk memaparkan nilai pembolehubah global $rootScope.isDirty untuk membuktikan bahawa nilai pembolehubah telah dikemas kini dengan betul kepada benar.

Kod kaedah pengendalian acara $ionicView.beforeLeave() yang didaftarkan dalam modul peringkat atas:

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,百思不得其解!
    });
  });
});

Dalam ujian<p> halaman kemasukan data, telah dilihat dengan jelas bahawa isDirty telah dikemas kini dengan betul kepada benar. Walau bagaimanapun, apabila meninggalkan halaman kemasukan data, saya melihat bahawa nilai isDirty yang dipaparkan dalam kotak gesaan pop timbul masih palsu. Mungkinkah pembolehubah ini boleh mempunyai dua nilai? ? ?

阿神阿神2697 hari yang lalu565

membalas semua(1)saya akan balas

  • 巴扎黑

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

    Sebaik-baiknya jangan gunakan ionik, caching adalah perangkap besar. . .

    balas
    0
  • Batalbalas