我的$ionicModal
有点麻烦。每当我打开一个模态时,它会强制一条空路线导致$urlRouterProvider.otherwise('/login');
发生。如果我从我的配置中取出$urlRouterProvider
,它可以正常工作 - 但是我的应用只是启动到空白屏幕。有谁知道导致这个问题的是什么?我在FeedController
:
$ionicModal.fromTemplateUrl('templates/views/view.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
});
$scope.modal.show().then(function() {
// Blah
});
我的配置如下:
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'templates/login.html',
controller: 'LoginController',
resolve: {
'currentAuth': function(Auth) {
return Auth.checkAuth().$waitForAuth();
},
'clearCache': function($ionicHistory) {
return $ionicHistory.clearCache();
}
}
})
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/main.html',
controller: 'SideMenuController',
resolve: {
'currentAuth': function(Auth) {
return Auth.checkAuth().$waitForAuth();
}
}
})
.state('app.feed', {
url: '/feed',
views: {
'viewContent': {
templateUrl: 'templates/views/feed.html',
controller: 'FeedController',
resolve: {
'currentAuth': function(Auth) {
return Auth.checkAuth().$requireAuth();
},
'clearCache': function($ionicHistory) {
return $ionicHistory.clearCache();
}
}
}
});
$urlRouterProvider.otherwise('/login');
});
我还应该提到我在解决状态加载之前检查AngularFire身份验证。我正在聆听$rootScope
以查看是否有$stateChangeError
,然后这会将用户重定向到登录屏幕,但这似乎不是问题,因此删除{ {1}}行:
$urlRouterProvider
我还要清除$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
if (error === 'AUTH_REQUIRED') {
$state.go('login');
}
});
和FeedController
解析的缓存。有没有人遇到过$ ionicModals这个问题?如果你能提供帮助,请告诉我。谢谢你。
答案 0 :(得分:1)
我将函数包装在try catch块中,还有一些额外的错误检查可以提供更多的洞察力。
此外,您假设$ionicModal.fromTemplateUrl
已立即解决,因为您在调用$scope.modal.show()
时未确保您确实拥有模式。
$ionicModal.fromTemplateUrl('templates/views/view.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
return modal.show();
}, function(_error) {
console.log(_error)
});
答案 1 :(得分:1)
想在这里发帖给其他遇到此事的人。我找到了解决方案。它是由[ngClass]="isOpen ? ['collapse', 'hidden-xs', 'visible-xs'] : []"
元素上的哈希href="#"
导致路由更改引起的。我猜<a>
在这种情况下看到一条空白路线?