我正在创建一个离子+ angularJs应用程序,Android是具体的。我不知道为什么,但在我的名字homeController
中,每当我试图调用一个函数向我显示$ionicModal
时,它就会给我一个错误......
TypeError:无法读取未定义的属性'show' 范围。$ scope.openModal(homeModule.js:18)at new (homeModule.js:59)at Object.invoke(ionic.bundle.js:11994)at at 离子.bundle.js上的$ get.extend.instance(ionic.bundle.js:16247):15502 在nodeLinkFn的forEach(ionic.bundle.js:8155) (ionic.bundle.js:15501)在compositeLinkFn(ionic.bundle.js:14887)at 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();
};
我已经尝试了许多不同的方法来使模态打开,有趣的是,每当我进入一个新的$状态,然后回去,它就会打开......但是当我刷新页面时却没有。另外,我做了一个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
任何人都可以帮我这个吗?提前谢谢。
答案 0 :(得分: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);
});
答案 1 :(得分:0)
我想我找到了解决办法。我试图从一个' if'内部打开模态。声明,一旦我从' if'中取出它,它就完美地运行了。无论如何,谢谢布拉德。