进入页面时,无法使ionicModal模板出现一次

时间:2016-06-17 06:08:25

标签: angularjs ionic-framework

我想使用ionicModal仅为用户提供一次指令(仅在用户第一次进入页面时)。

但是对于我当前的代码,每次用户进入页面时都会出现。我用谷歌搜索,但没有看到相关的结果。

这是工作代码(每次用户进入页面时都会出现)

    .controller('formCtrl', function($scope,$ionicModal, getUrl,$state) {
  $ionicModal.fromTemplateUrl('templates/instruction.html', {
    scope: $scope,
    animation: 'slide-in-up'
  }).then(function(modal) {
    $scope.modal = modal;
  });
  $scope.openModal = function(){
    $scope.modal.show();
  }
  $scope.closeModal = function(){
    $scope.modal.hide();
  }
  $scope.$on( "$ionicView.enter", function( scopes, states ) {
    $scope.openModal();
  });
})

尝试通过置入条件(不起作用)来修改它

    .controller('formCtrl', function($scope,$ionicModal, getUrl,$state, getInstructions) {
  $scope.$on("$ionicView.enter", function( scopes, states ) {
    if(getInstructions.getInstruction() == true){

      $ionicModal.fromTemplateUrl('templates/instruction.html', {
        scope: $scope,
        animation: 'slide-in-up',
      }).then(function(modal) {
        $scope.modal = modal;
      });

      $scope.openModal = function(){
        $scope.modal.show();
      }
      getInstructions.setInstruction(); //set as false

      $scope.closeModal = function() {
          $scope.modal.hide();
      };

      $scope.$on('$ionicView.afterEnter', function(scopes, states) {
        console.log("after enter");
        $scope.openModal();
      });
    }
  });
})

提前谢谢!

2 个答案:

答案 0 :(得分:0)

.controller('formCtrl', function($scope,$ionicModal, getUrl,$state) {
   $scope.modalViewed = false;
  $ionicModal.fromTemplateUrl('templates/instruction.html', {
    scope: $scope,
    animation: 'slide-in-up'
  }).then(function(modal) {
    $scope.modal = modal;
  });
  $scope.openModal = function(){
    $scope.modal.show();
  }
  $scope.closeModal = function(){
    $scope.modal.hide();
  }
  $scope.$on( "$ionicView.enter", function( scopes, states ) {
    if(!$scope.modalViewed){
      $scope.modalViewed = true;
      $scope.openModal();
    }  
  });
})

我在范围$scope.modalViewed中添加了一个检查变量。并在打开模态之前检查条件。

如果删除离子视图的默认缓存,则此条件不起作用。如果没有缓存,控制器将再次运行,此代码将无法运行。在这种情况下,您必须将检查变量$scope.modalViewed存储到会话存储中,并删除控制器中的初始化。

答案 1 :(得分:0)

试试这个

{{1}}