重新加载不在离子应用程序中工作

时间:2015-08-15 12:27:42

标签: javascript android angularjs ionic-framework

我正在离子框架中构建我的应用程序,我的登录代码最初是

AuthService.login(data.username, data.password).then(function(authenticated) {
  $state.go('app.dashboard', {}, {reload: true});
}, function(err) {
  var alertPopup = $ionicPopup.alert({
    title: 'Login failed!',
    template: 'Please check your credentials!'
  });
});

但与我的预期不同,登录后页面没有重新加载,仍显示没有菜单选项的后退按钮。我现在将代码更改为

AuthService.login(data.username, data.password).then(function (data, status, headers, config) {
  $state.go('app.dashboard').then(function() {
    $window.location.reload(true);
  });

}, function (err) {
  var alertPopup = $ionicPopup.alert({
    title: 'Login failed!',
    template: 'Please check your credentials!'
  });
});

Code我现在已经在某些Android手机上运行良好但在某些Android手机(4.x版本)上效果不佳。

登录后重新加载的正确方法是什么?

我认为它的行为是html。以下是我的menu.html代码

<ion-side-menus enable-menu-with-back-views="false">
    <ion-side-menu-content>
        <ion-nav-bar class="bar-dark">
            <ion-nav-back-button>
            </ion-nav-back-button>

            <ion-nav-buttons side="right">
                <button class="button button-icon button-clear ion-navicon" menu-toggle="right">
                </button>
            </ion-nav-buttons>
        </ion-nav-bar>
        <ion-nav-view name="menuContent"></ion-nav-view>
    </ion-side-menu-content>

    <ion-side-menu side="right">
        <ion-header-bar class="bar-dark">
            <h1 class="title">Menu</h1>
        </ion-header-bar>
        <ion-content>
            <ion-list>
            <!-- content -->
            </ion-list>
        </ion-content>
    </ion-side-menu>
</ion-side-menus> 

以下是我的app.js代码

$stateProvider

  .state('app', {
    url: "/app",
    abstract: true,
    templateUrl: "templates/menu.html",
    controller: 'AppCtrl'
  })

  .state('app.profile', {
    url: "/profile",
    views: {
      'menuContent': {
        templateUrl: "templates/profile.html"
      }
    }
  })
//more pages
;

1 个答案:

答案 0 :(得分:1)

确保每次输入页面都重新加载使用

$scope.$on('$ionicView.beforeEnter', function(){
 //place anything you want to run evertime this view is entered here. for example
 //$scope.getData();
 //$scope.variable1 = something;
})

这将在输入视图之前运行您放入其中的所有内容。这是我如何使用它的一个例子。

$scope.$on('$ionicView.beforeEnter', function () {
            $scope.doRefresh();
        });

并在我的doRefresh函数中:

我抓住了一堆我需要刷新的数据:

$scope.doRefresh = function () {
        $scope.setRoles();
        $scope.payHistory();
        $scope.LoadBoard();
        $scope.Blog();
        $scope.getHOS();
        $scope.getFuelData();
    }
};

您可以使用ng-if或ng-show检查刷新和设置变量的所有逻辑,以在菜单栏中显示正确的按钮。 在这里查看更多ionicView事件:http://ionicframework.com/docs/api/directive/ionView/