javascript - $location.path 更改路径,不导航,但刷新时显示两次 [Ionic]

标签 javascript angularjs ionic-framework

我尝试在成功登录后导航到某个页面。登录页面是通过inappbrowser调用的网页。现在,当 inappbrowser 成功验证用户身份时,它应该导航到该 View 。

我使用了 $location.path 并且它正确地更改了路径。但是,它在加载时不会在设备上显示。(尽管它在 Chrome 上正确显示)

但是,当我添加 window.location.reload(true) 语句时,它会加载所需的页面,然后再次加载。

如何停止重新加载两次?

.service('LoginService',function($q,$rootScope,$cordovaInAppBrowser,$http,$state,jwtHelper,$location) {
 return {
    loginUser: function() {
        var deferred = $q.defer();
        var promise = deferred.promise;
  $cordovaInAppBrowser.open(url).then(function(event) {     
    console.log(event);
     // success
  })
$rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event){
if(userIsValid){
deferred.resolve(username); //Here i validate the user and change the location
$location.path('app/playlists');
               }
}

promise.success = function(fn) {
            promise.then(fn);
            return promise;
        }
        promise.error = function(fn) {
            promise.then(null, fn);
            return promise;
        }
        return promise;
    }
}

现在,在 app.js 中

 .state('app.playlists', {
  url: '/playlists',
  views: {
    'menuContent': {
      templateUrl: 'templates/playlists.html',
      controller: 'PlaylistsCtrl'
    }
  }
})

现在,在 LoginController 中

.controller('LoginCtrl', function($scope,$timeout,$rootScope,LoginService,  $ionicPopup, $state,$location) {
$scope.login = function() {       
    LoginService.loginUser().success(function(data) {
        console.log(data);           
}).error(function(data) {
        var alertPopup = $ionicPopup.alert({
            title: 'Login failed!',
            template: 'Please check your credentials!'
        });
    });

}

}) }

最佳答案

您不应该使用window.location.reload。您应该包含 $location 模块并执行 $route.reload() 来重置您的状态路由器。您还可以尝试使用 $state.reload(); $state.go($state.current, {}, {reload: true});

我知道在基于路由的导航时 IONIC 缓存存在问题,请检查一下 $ionicConfigProvider.views.maxCache(0); 它应该添加到配置 IONIC 的位置。

关于javascript - $location.path 更改路径,不导航,但刷新时显示两次 [Ionic],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41964393/

相关文章:

javascript - 如何让 <div> 以慢动作出现

javascript - Vue js axios 向 golang 服务器发出请求,Preflight 错误

javascript - 如何在每次重新加载时重新排列 div 顺序?

javascript - columnDefs 标题有时不显示

javascript - javascript中的删除运算符

php - AngularJS、PHP 和 MySQL : How to insert variables correctly using PDO?

javascript - 将多维对象数组转换为 JSON

html - 将元素锚定到 Ionic 菜单的底部

ios - iframe 在 iOS 中不工作( ionic 框架)

javascript - 解析 Facebook 登录错误 : "You must initialize FacebookUtils before calling logIn"