ログインに成功した後、ページに移動しようとしています。ログインページは、inappbrowser経由で呼び出されるWebページです。ここで、In AppBrowserがユーザーの認証に成功すると、そのビューにナビゲートする必要があります。
私は$ location.pathを使用し、パスを正しく変更します。しかし、ロード時にデバイスに表示されません(Chromeでは正しく表示されます)
window.location.reload(true)ステートメントを追加すると、必要なページがロードされて読み込まれます再び。
私はどのように停止するのですか?今app.js
.state('app.playlists', {
url: '/playlists',
views: {
'menuContent': {
templateUrl: 'templates/playlists.html',
controller: 'PlaylistsCtrl'
}
}
})
で今
.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;
}
}
、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!'
});
});
}
}) }
再生リストのコントローラに入るので、$ state.go($ state.current、{}、{reload:true})を配置しました。プレイリストのコントローラでは動作しません(エラーなし)。イオンは$ルートの依存関係をサポートしていますが、注入できませんでした。テストプログラムは本当にありがたいです –
イオンキャッシングはちょっと変です。あなたのionic設定ファイルに '$ ionicConfigProvider.views.maxCache(0)'を追加してみてください。あなたはこの@SouravDas – user3236101
のために使用しているビューを見ることはできますか?問題は、InAppBrowserで、私はそれを閉じませんでした:P –