Javascript 爱奥尼亚(AngularJS)-重定向用户和路由
所以我在这个新项目中使用了Ionic,在路由方面需要一些支持(AngularN00B) 我有以下几个州:Javascript 爱奥尼亚(AngularJS)-重定向用户和路由,javascript,angularjs,cordova,ionic-framework,angularjs-routing,Javascript,Angularjs,Cordova,Ionic Framework,Angularjs Routing,所以我在这个新项目中使用了Ionic,在路由方面需要一些支持(AngularN00B) 我有以下几个州: $stateProvider.state('map', { url: '/map', views: { map: { templateUrl: 'views/map.html', controller: 'mapCtrl' } } }) .state('help', { url:
$stateProvider.state('map', {
url: '/map',
views: {
map: {
templateUrl: 'views/map.html',
controller: 'mapCtrl'
}
}
})
.state('help', {
url: '/help',
views: {
help: {
templateUrl: 'views/help.html'
}
}
})
.state('setname', {
url: '/setname',
views: {
setname: {
templateUrl: 'views/setname.html',
controller: 'setNameCtrl'
}
}
})
我希望用户在“myName”为空的情况下尝试访问另一个页面时被重定向到“setname”(将来我会做类似的事情,在允许访问应用程序之前检查用户是否登录)
这是当前的HTML,对此一点也不确定
<ion-tabs class="tabs-positive">
<ion-tab icon="ion-home" ui-sref="map">
<ion-nav-view name="map"></ion-nav-view>
</ion-tab>
<ion-tab icon="ion-help" ui-sref="help">
<ion-nav-view name="help"></ion-nav-view>
</ion-tab>
</ion-tabs>
请帮忙,我会非常感激的
第二个问题,仍然是关于路由和显示内容:我的应用程序的基础将是地图。我希望用户能够在任何时候非常快地访问它,所以我希望它在显示另一个页面时始终在后台可用(比如说帮助)。因此,每当用户单击一个给定的按钮时,它只会将用户带回地图,而不必再次加载它。你建议我怎么做?我曾想过使用Ionic的“popover”属性,但我不确定这是否正确:$ionicPopover/
多谢各位 关于你的第一个问题
您应该使用$state.go,例如:
.controller('testCtrl', function($scope, $state) {
$scope.data = {};
$scope.save = function(){
if ($scope.data.Name == ""){
$state.go("setname");
}
})
如果myName属性为true/false,则可以包含一个服务,该服务将检查每个控制器。 比如: 第二种方法: 可能是不好的方法,但在我看来更平滑的方法是,将myName属性注入到rootScope中。因此,您可以查看每个站点:
if(!$rootScope.myName){ $location.path("/yourPath");
现在,如果没有指定值myName,用户将被重定向到页面“yourPath”
您的第二个问题:您应该查看:http请求只执行一次。数据被缓存,因此用户可以看到它而不会闪烁
希望能有帮助。谢谢,它起作用了!我使用了你的rootscope解决方案,还有$state.go quicoli给我的。控制台只抛出了一个奇怪的错误,如果您知道这是什么,请告诉我:“TypeError:scrollView为null”。只有在使用$state.go或$location重定向时才会发生这种情况。另外,对于第二点,我知道HTTP请求是缓存的,但是映射加载在分片中,并且仍然需要获取分片。另外,如果用户在另一个屏幕上,并且仍然在移动(例如在公共汽车上),我希望地图继续工作,并使用GPS跟踪他,因此当他回到屏幕上时,地图已经在移动了good@JeremyBelolo要识别您所谈论的TyperError,最好查看控制台输出,因为它有错误源:file(代码行)…Firebug:“TypeError:scrollView为空行39815”…Chrome控制台:“未捕获的TypeError:无法读取空ionic.bundle.js:39815(匿名函数)ionic.bundle.js:39815 onPlatformReady ionic.bundle.js:2241 onWindowLoad ionic.bundle.js:2220”的属性“很高兴它有帮助。所以你可以接受这个答案;)你的第二个问题:你可以把地图放在一个模态中。此处的文档:。关闭模式时有一个$destroy函数。尽量不要调用这个函数。那么模态应该在后台工作。但是要注意内存问题。请参阅问题中的注释谢谢您使用“$state.go”命令!如果你能看看我对@m1crdy答案的评论,看看你是否有什么想法,那将是非常感谢你:)祝你有一个美好的一天/晚上/晚上!啊,我知道为什么“ion navview为空”。你的html搞乱了。请看此视频:。始终只有一个导航视图。你有两个。你只需要一个。使用模板。在这段视频中,所有这些都得到了解释。外观良好—从cli中的ionic模板开发或启动项目。就像选项卡式模板。这是来自模板^^^看起来他们改变了他们的导航视图类型。。。疯子
if(!$rootScope.myName){ $location.path("/yourPath");