javascript - ionic 模态删除和动画不起作用

标签 javascript jquery cordova ionic-framework

我正在使用 ionic 模式,一旦我打开 ionic 模式并提交按钮, ionic 删除模型就无法工作,甚至动画也无法在模式中工作。我尝试使用 ionic 隐藏而不是删除,但是它仍然不起作用,任何人都可以告诉我 ionic 模式的问题是什么。

模态:

'use strict';
(function () {
      angular.module('main')
     .service('ModalService', ModalService);
     ModalService.$inject = ['$ionicModal', '$log'];
     function ModalService ($ionicModal, $log) {
    var init = function (tpl, $scope) {
      var promise;
      var a = $scope;
      $scope = a;

      promise = $ionicModal.fromTemplateUrl(tpl, {
        scope: $scope,
        animation: 'slide-in-right'
      }).then(function (modal) {
        $scope.modal = modal;
        return modal;
      });

      $scope.openModal = function () {
        $log.log('openModal function got clicked', $scope);
        $scope.modal.show();
      };

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

      $scope.removeModal = function () {
        $scope.modal.remove();
      };

      $scope.$on('$destroy', function () {
        $scope.modal.remove();
      });

      return promise;
    };

    return {
      init: init
    };
  }
})();

调用 ionic 删除和隐藏的 Controller :

function modalFunction (htmlpath) {
  vm.modalListType = 'category';
  ModalService
    .init(htmlpath, $scope)
    .then(function (modal) {
      $log.log('modal success');
      catModal = modal;
      catModal.show();
      vm.search = '';
    });
}

function closeModal () {
  catModal.hide();
}

function removeModal () {
  $log.log('removeModal got called', catModal);
  catModal.remove();
}

HTML 文件:

<div class="center-align">
      <button class="button trans-but m-t-10" type="submit" ng-click="vm.addProduct()">{{'save_message' | translate}}</button>
    </div>

调用remove函数的函数:

function addProduct () {
  $log.log('addProduct called: ', vm.product);
  var data = [];
  data.push({field: vm.product.type, type: 'text', name: $translate.instant('{{"producttype_message" | translate}}')});
  data.push({field: vm.product.count, type: 'num', amounttype: 'Advance', name: $translate.instant('{{"ecount_message" | translate}}')});
  data.push({field: vm.product.rate, type: 'num', amounttype: 'Advance', name: $translate.instant('{{"eprice_message" | translate}}')});
  CommonService.validate(data).then(function () {
    //vm.product.total = (vm.product.count - vm.product.deduction) * vm.product.rate;
    vm.products.push(vm.product);
    closeModal();
    removeModal();
  }, function (err) {
    cordova.plugins.Keyboard.close();
    CommonService.toast(err);
  });
}

最佳答案

如果您尝试使用函数关闭模态框,$scope.modal.hide(); 因为如果您使用 remove(),您将必须再次创建模式。

可能的解决方案是:

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

或者

function closeModal () {
  $scope.modal.remove();
}

这将位于您的 modalFunction Controller 内。

关于javascript - ionic 模态删除和动画不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47034109/

相关文章:

javascript - 如何从 Windows 8/10 WInJS 应用程序在 IE 而不是 Edge 中启动 URL

javascript - 相互依赖的组件需要相互通信

javascript - 当数据表单元格的值发生变化时,如何更改该单元格中值的颜色

jquery - ASP 验证的样式 - RequiredFieldValidator 和 RegularExpressionValidator

javascript - 在 Ionic 和 Cordova 中构建 Android APK

android - InAppBrowser 不会在 ionic 全屏模式下播放 Youtube 视频

javascript - 如何在点击时显示 ul 元素?

javascript - meteor 与奥里莉亚

javascript - 创建 key :value pairs for an object while looping and setting variable for each

javascript - 文本框不在 slider 的中心位置