Le code dans le contrôleur de la page de saisie des données :
.controller("MobileInputCtrl", function ($scope, $rootScope) {
$scope.$watch("myForm.$dirty", function (newVal) {
$rootScope.isDirty = newVal;
});
})
Mettez un test<p> sur la page de saisie de données pour afficher la valeur de la variable globale $rootScope.isDirty afin de prouver que la valeur de la variable a été correctement mise à jour sur true.
Le code de la méthode de gestion des événements $ionicView.beforeLeave() enregistré dans le module de niveau supérieur :
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,百思不得其解!
});
});
});
Dans le test<p> de la page de saisie des données, il a été clairement vu qu'isDirty a été correctement mis à jour sur true. Mais lorsque j'ai quitté la page de saisie des données, j'ai vu que la valeur isDirty affichée dans la boîte de dialogue contextuelle était toujours fausse. J'étais perplexe ! Se pourrait-il que cette variable puisse avoir deux valeurs ? ? ?
Il est préférable de ne pas utiliser ionic, la mise en cache est un gros gouffre. . .