programing

Ionic Framework를 사용한 로그인/로그아웃 이력 클리어 및 새로고침 페이지

goodjava 2023. 3. 16. 21:28

Ionic Framework를 사용한 로그인/로그아웃 이력 클리어 및 새로고침 페이지

이오닉의 및 시 이 페이지는 새로고침해야 합니다.$state.go('mainPage')는 새로고침 없이 사용자를 뷰로 되돌립니다.이치노

역사를 지우고 국가를 다시 불러올 방법이 있나요?

프레임워크에 오신 것을 환영합니다!실제로 Ionic에서의 라우팅은 ui-router에 의해 구동됩니다.문제를 해결하기 위한 몇 가지 다른 방법을 찾으려면 이전 SO 질문을 확인해야 합니다.

상태를 새로고침하는 경우 다음을 사용할 수 있습니다.

$state.go($state.current, {}, {reload: true});

실제로 페이지를 새로고침하는 경우(와 같이 모든 것을 다시 부트스트랩 하는 경우) 다음과 같이 사용할 수 있습니다.

$window.location.reload(true)

행운을 빕니다.

Jim Dev의 에 Jim The Dev가 포함되어 있을 하다는 것을 .cache:false캐시되어 , 「」를 실행할 수 .$ionicHistory.clearCache() 다음에 또 한 번.$state.go('app.fooDestinationView')캐시되지만 새로 고쳐야 하는 상태로 이동하는 경우.

Ionic에 대한 간단한 변경이 필요하며 풀 요청을 작성했습니다.https://stackoverflow.com/a/30224972/756177

정답:

$window.location.reload(true);

나는 그것을 완성하는 데 도움이 되는 해결책을 찾았다. ★★cache-view="false"ion-view이치노

<ion-view cache-view="false" view-title="My Title!">
  ....
</ion-view>

페이지를 새로고침하는 것은 최선의 방법이 아닙니다.

뷰 자체를 새로고침하지 않고 새로고침 데이터에 대한 상태 변경 이벤트를 처리할 수 있습니다.

ionicView라이프 사이클은 이쪽에서 보실 수 있습니다.

http://blog.ionic.io/navigating-the-changes/

데이터 새로고침 전에 이벤트를 처리합니다.

$scope.$on('$ionicView.beforeEnter', function(){
  // Any thing you can think of
});

내 경우 보기만 지우고 컨트롤러를 다시 시작해야 합니다.나는 이 단편으로 내 의도를 알 수 있었다.

$ionicHistory.clearCache([$state.current.name]).then(function() {
  $state.reload();
});

캐시는 아직 작동하고 있으며 보기만 지워진 것 같습니다.

ionic --version..7.5라고 .

의 어느 도, 호스트명과는 호스트명에 는 동작하지 .localhost!

전달되는 옵션 목록에 추가해야 했습니다.$state.go청취자 Angular Change 전$window.location.reload콜이 호출됩니다.최종 코드는 다음과 같습니다.

$state.go('home', {}, {reload: true, notify: false});

>>>편집 - 브라우저에 따라서는 $timeout이 필요할 수 있습니다.>>

$timeout(function () { $window.location.reload(true); }, 100);

<< 편집 종료<<

자세한 내용은 UI 라우터 참조를 참조하십시오.

angularjs를 사용하여 페이지 새로 고침을 하려고 했는데 혼란스러운 웹사이트를 보았는데 코드에는 아무런 코드도 작용하지 않아 다음 방법으로 페이지를 새로고침하기 위한 솔루션을 얻었습니다.

$state.go('path',null,{reload:true});

이 기능을 사용할 수 있습니다.

스크롤 바를 작동시키기 위해 상태를 다시 로드해야 했습니다.다른 상태, 즉 '등록'을 통과하면 작동하지 않습니다.등록 후 앱을 강제로 닫았다가 다시 열었을 경우, 즉 '홈' 상태로 바로 이동하면 스크롤바가 작동합니다.위의 솔루션 중 어느 것도 작동하지 않았습니다.

등록 후 다음을 대체했습니다.

$state.go("home");

와 함께

window.location = "index.html"; 

앱이 새로고침되고 스크롤바가 작동합니다.

컨트롤러는 한 번만 호출되므로 이 논리 모델을 유지해야 합니다.이러한 작업은 주로 다음과 같습니다.

메서드를 만듭니다.$scope.reload(params)

이 메서드의 시작 부분에서$ionicLoading.show({template:..})커스텀 스피너를 보여주려고

새로고침 프로세스가 완료되면 전화할 수 있습니다.$ionicLoading.hide()콜백으로서

마지막으로 REFRESH 버튼 안에ng-click = "reload(params)"

이 솔루션의 유일한 단점은 이온 내비게이션 이력 시스템이 손실된다는 것입니다.

이게 도움이 됐으면 좋겠네요!

뷰 변경 후 새로고침하려면

$state.reload('state',{reload:true});

해당 뷰를 새로운 "루트"로 만들려면 다음 뷰가 루트가 될 것이라고 이온성에게 말할 수 있습니다.

 $ionicHistory.nextViewOptions({ historyRoot: true });
 $state.go('app.xxx');
 return;

뷰를 변경할 때마다 컨트롤러를 새로고침하는 경우

app.config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider) {

$ionicConfigProvider.views.maxCache(0);

.state(url: '/url', 컨트롤러: Ctl, templateUrl: 'template'.html', cache: false) 캐시: false ==> 문제 해결!

@ezain reload controller에서 지적된 바와 같이 필요한 경우에만 컨트롤러가 새로고침됩니다.컨트롤러를 새로고침하는 것이 아니라 상태를 변경할 때 데이터를 갱신하는 또 다른 깔끔한 방법은 브로드캐스트이벤트를 사용하여 뷰의 데이터를 갱신해야 하는 컨트롤러에서 이러한 이벤트를 듣는 것입니다.

예: 로그인/로그아웃 기능에서는 다음과 같은 작업을 수행할 수 있습니다.

$scope.login = function(){
    //After login logic then send a broadcast
    $rootScope.$broadcast("user-logged-in");
    $state.go("mainPage");
};
$scope.logout = function(){
   //After logout logic then send a broadcast
   $rootScope.$broadcast("user-logged-out");
   $state.go("mainPage");
};

이제 mainPage Controller에서 $on 함수를 사용하여 다음과 같이 mainPage Controller 내에서 브로드캐스트를 청취함으로써 뷰의 변경을 트리거합니다.

$scope.$on("user-logged-in", function(){
     //update mainPage view data here eg. $scope.username = 'John';
});

$scope.$on("user-logged-out", function(){
    //update mainPage view data here eg. $scope.username = '';
});

여러 가지 방법을 시도해 봤지만 이 방법이 완전히 정확하다는 것을 알게 되었습니다.

$window.location.reload();

버전 1.5.5, 1.2.4, angular-ui-router 1.0.0과 같은 다른 사용자가 이 버전을 사용하는 데 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/25192172/clear-history-and-reload-page-on-login-logout-using-ionic-framework