2015-02-04 4 views
3

Android 용으로 ionic + angularJs 앱을 만들고 있습니다.이오 모달이 열리지 않습니다 (TypeError : 정의되지 않은 'show'속성을 읽을 수 없습니다)?

TypeError: Cannot read property 'show' of undefined 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)

내 컨트롤러 (이 같은 시작을 보이는 ... 그것은 나에게 오류를 제공, 그 이유를 모르겠지만, 내 때문에, homeController라는 이름에 나는 나에게 $ionicModal를 표시하는 함수를 호출하려고 할 때마다) 그것을 :

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(); 
    }; 

내가 모달가 열려 있도록 이미 여러 가지 방법을 시도, 나는 새로운 $ 상태로 이동하고 돌아갈 때마다 재미있는 점은, 그것은 열립니다 ...하지만하지 않을 때 페이지를 새로 고칩니다. 또한, 나는 내 변수가 설정되는 경우 확인하기 위해 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 

사람이 나를이 일에 도움을 주시기 바랍니다 수 있습니까? 미리 감사드립니다.

답변

3

오류는 $scope.modal이 생성되지 않았 음을 나타냅니다. fromTemplateUrl을 호출하면 올바르지 않습니다. 두 번째 매개 변수는 모달 옵션이며 콜백을 전달합니다.

설명서는 good example을 제공합니다. 귀하의 경우에는

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); 
}); 
+0

나는 당신이 말한대로했으나 불행히도 작동하지 않았다 ... 나는 이오니아에 대해 조금은 초보자 다. 그러나 내가 아는 것과 내가 본 문서에서, 그것이 맞다.하지만 여전히 그렇다. 저에게 "정의되지 않은"속성 'show'를 읽을 수 없습니다 ... 아마 AngularJS와 관련이 있습니까? 나는 ionic.bundle.js를 사용하고 있습니다 ... 그리고 여전히, console.log는 제가 정의한 모달을 보여 줍니 다. 그러나 그것을 열지 못합니다. –

+0

나는 그것이 최선의 방법이라고 생각하지 않기 때문에 임시 해결책을 찾았습니다. .. 내가 $ ionicModal을 열어서 그 동안 그 함수를 정의하고있는 동안 열어 보았습니다 ...하지만 이걸하는 것이 최선인지는 모르겠다. –

+0

나는 그렇지 않았기 때문에 비슷한 문제가 있었다. 플러그인 추가 : cordova plugin add https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git –

0

내가 수정 프로그램을 찾은 것 같아요. 나는 'if'문에서 내부에서 모달을 열려고 시도했다. 'if'문에서 벗어나면 완벽하게 정상적으로 작동했다. 어쨌든, 브래드 감사합니다.

관련 문제