我正在使用离子与firebase,并尝试在登录主页时重定向。 $ state.go重定向确实有效,但我有一个名为' Profile'的隐藏标签,在用户通过身份验证之前我不会显示。此标签仍隐藏在$ state.go重定向上,并且在我点击“主页”之前不会显示。再次选项卡。如何在重定向上加载ui的负载?
HTML:
标签HTML:
<ion-tabs class="tabs-icon-top tabs-color-active-positive" ng-controller="LoginCtrl">
<!-- Login Tab -->
<ion-tab title="Login" icon-off="ion-locked" icon-on="ion-locked" href="#/tab/login">
<ion-nav-view name="tab-login"></ion-nav-view>
</ion-tab>
<!-- Dashboard Tab -->
<ion-tab title="New Post" icon-off="ion-compose" icon-on="ion-compose" href="#/tab/new">
<ion-nav-view name="tab-new"></ion-nav-view>
</ion-tab>
<!-- Chats Tab -->
<ion-tab title="Home" icon-off="ion-ios-home" icon-on="ion-ios-home" href="#/tab/home">
<ion-nav-view name="tab-home"></ion-nav-view>
</ion-tab>
<!-- Account Tab -->
<ion-tab class="{{hiddenProfileTab()}}" title="Profile" icon-off="ion-person" icon-on="ion-person" href="#/tab/profile">
<ion-nav-view name="tab-profile"></ion-nav-view>
</ion-tab>
</ion-tabs>
登录控制器
.controller('LoginCtrl', ['$scope', '$rootScope', '$state', '$location', function($scope, $rootScope, $state, $location) {
$scope.hiddenProfileTab = function(){
// return "ng-hide";
if ($rootScope.currentUser){
return "ng-show";
} else {
return "ng-hide";
}
}
//DO SOME THINGS
// $location.path('tab.home')
// $state.go('tab.home')
// $state.go('tab.home'), {}, { reload: true }
$state.go('tab.home',{},{location:'replace'});
};
}])
要重申此问题,“个人资料”标签仍隐藏在$ state.go重定向到“家庭”主页上。页面,直到&#39; home&#39;单击页面选项卡。
如何在重定向上加载UI?
答案 0 :(得分:3)
使用ng-show
代替使用带{{}}
插值的class属性。
<ion-tab ng-show="currentUser" title="Profile" icon-off="ion-person" icon-on="ion-person" href="#/tab/profile">
<ion-nav-view name="tab-profile"></ion-nav-view>
</ion-tab>
答案 1 :(得分:0)
通过设置cache:false解决此问题,以便强制控制器再次加载。
.state('tab.home', {
cache: false,
url: '/home',
views: {
'tab-home': {
templateUrl: 'templates/tab-home.html',
controller: 'HomeCtrl'
}
}
})
答案 2 :(得分:0)
不确定它是否直接归因于此特定问题,但是当我遇到类似问题时,元素在用户开始与UI交互之前不显示,我发现问题是由于多个元素具有相同的& #34; ID&#34;属性值。
在我的情况下,它与我在多个视图上使用的加载器动画图标有关。我总是将加载器ID设置为相同的东西(&#34; loading-progress&#34;)。在显示和隐藏我的加载器时,我遇到了奇怪的行为,直到我确定为每个加载器命名。
最终,我认为我的问题是由于没有将角度视为单页应用程序而是编码,好像它是一个具有独特页面和视图的完整网站。只关注手头的观点并忘记它实际上是坐在一大堆嵌套视图和html片段中,这很容易。
编辑:另外,我应该提到,另一个没有出现内容的常见问题(特别是动态加载的内容)通常与窗口/ div调整大小有关。特别是,如果您从隐藏的div开始,然后通过api调用填充数据,您通常需要通过调用来结束它:
$ ionicScrollDelegate.resize()
强制重新计算div的大小。如果没有这个,您的数据可以加载但仍然不可见,因为父div仍然以0px高度挂出。
再次编辑!:
此外,在使用ng-repeat和类似的动态角度数据绑定时,强制ng逻辑将html与您可以使用的数据重新同步:
$ $范围应用();