离子模态未打开(类型错误:无法读取未定义的属性“显示”)

Ionic Modal not opening (TypeError: Cannot read property 'show' of undefined)?

本文关键字:未定义 读取 属性 显示 模态 错误 类型      更新时间:2023-09-26

我正在制作一个离子+ angularJs应用程序,具体来说,是Android。我不知道为什么,但是在我所谓的homeController中,每当我尝试调用一个函数来向我显示$ionicModal时,它都会给我一个错误......

类型错误: 无法读取未定义的属性"show" at Scope.$scope.openModal (homeModule.js:18) at new (homeModule.js:59) at Object.invoke (ionic.bundle.js:11994) at $get.extend.instance (ionic.bundle.js:16247) at ionic.bundle.js:15502 at forEach (ionic.bundle.js:8155) at nodeLinkFn (ionic.bundle.js:15501) at compositeLinkFn (ionic.bundle.js:14887) at publicLinkFn (ionic.bundle.js:14766) at IonicModule.controller.self.appendViewElement (ionic.bundle.js:47324)

我的控制器看起来像这样(它的开始):

app.controller('homeController', function($scope, $ionicPopup, $state, $ionicLoading, $rootScope, $ionicModal, mapFactory){
    // Load the modal from the given template URL
    $ionicModal.fromTemplateUrl('templates/loginModal.html', function($ionicModal) {
      $scope.modal = $ionicModal;
      console.log($scope.modal);
    }, {
      scope: $scope,
      animation: 'slide-in-up',
      backdropClickToClose: false,
      hardwareBackButtonClose: false,
      focusFirstInput: true
    });
    $scope.openModal = function() {
        $scope.modal.show();
    };
    $scope.closeModal = function() {
        $scope.modal.hide();
    };

我已经尝试了许多不同的方法来使模态打开,有趣的是,每当我去一个新的$state,然后回去,它就会打开......但不是当我刷新页面时。另外,我做了一个console.log($scope.modal)来查看我的变量是否被设置,结果是:

ionic.Utils.inherit.child {focusFirstInput: true, unfocusOnHide: true, focusFirstDelay: 600, backdropClickToClose: false, hardwareBackButtonClose: false…}$el: JQLite[1]animation: "slide-in-up"backdropClickToClose: falseel: div.modal-backdropfocusFirstDelay: 600focusFirstInput: truehardwareBackButtonClose: falsemodalEl: ion-modal-view.modalscope: ChildScopeunfocusOnHide: trueviewType: "modal"__proto__: ionic.Utils.inherit.Surrogate 

谁能帮我这个?提前谢谢。

该错误意味着未创建$scope.modal - 您调用fromTemplateUrl不正确。 第二个参数是模态选项,你正在传递回调。

该文档提供了一个很好的例子。

在您的情况下,对fromTemplateUrl的调用应如下所示:

$ionicModal.fromTemplateUrl('templates/loginModal.html', {
  scope: $scope,
  animation: 'slide-in-up',
  backdropClickToClose: false,
  hardwareBackButtonClose: false,
  focusFirstInput: true
}).then(function(modal) {
  $scope.modal = modal;
  console.log($scope.modal);
});
我想

我找到了解决方法。我试图从"if"语句中打开模态,一旦我从"if"中取出它,它就工作得很好。无论如何,谢谢布拉德。