2016-09-20 3 views
1

Я использую угловой для рендеринга вид, как это:Восстановление сферы при нажатии кнопки браузера назад щелкают

var app = angular.module("demo", []); 
 

 

 

 
app.controller('demoCtrl', ["$scope",function ($scope) { 
 
    
 
    $scope.current_step = 1; 
 
    
 
    $scope.step_two = function(){ 
 
     $scope.current_step = 2; 
 
    }; 
 
    
 
    $scope.step_one = function(){ 
 
     $scope.current_step = 1; 
 
    }; 
 
    
 
}]);
.button { 
 
    background: #fb6648; 
 
    color: #fff; 
 
    display: inline-block; 
 
    padding: 18px 0px; 
 
    max-width: 150px; 
 
    width: 100%; 
 
    text-align: center; 
 
    border-radius: 3px; 
 
    font-size: 18px; 
 
    transition: all 0.5s; 
 
    outline: none; 
 
    border: none; 
 
    -webkit-appearance: none!important; 
 
} 
 

 
.area { 
 
    width: 100px; 
 
    height: 100px; 
 
    display: block; 
 
    border: 1px solid; 
 
    text-align: center; 
 
    margin-bottom: 20px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="demo"> 
 

 
\t \t <div ng-controller="demoCtrl" id="demoCtrl"> 
 
\t \t  
 
\t \t \t <div ng-if="current_step==1"> 
 
\t \t  \t <span class="area" >Step One</span> 
 
\t \t  <a class="button" ng-click="step_two()" >go to Step Two</a> 
 
\t \t  </div> 
 
\t \t 
 
\t \t \t <div ng-if="current_step==2"> 
 
\t \t  \t <span class="area">Step Two</span> 
 
\t \t  \t <a class="button" ng-click="step_one()" >Back to Step One</a> 
 
\t \t  </div> 
 
\t \t 
 
\t \t 
 
\t \t </div> 
 
</body>

я хочу эту кнопку, чтобы работать, когда браузер назад и кнопка коварные нажимаются. Я попытался изменить хэш, но он не сработал.

+0

вам нужно использовать угловой маршрутизатор – azad

+0

Да, я знаю, но у меня уже есть этот проект без углового маршрутизатора. не хотят включать его для этой небольшой функциональности. –

+0

вы теряете страницу при обратном или обратном направлении – azad

ответ

1

Кажется, что вам нужно сохранить значение области действия как cookie.

Это можно сделать, как показано ниже.

Case-1: Печенье Больше $cookies

Обеспечивает чтения/записи в куки браузера.

angular.module('cookieStoreExample', ['ngCookies']) 
.controller('ExampleController', ['$cookieStore', function($cookieStore) { 
    // Put cookie 
    $cookieStore.put('myFavorite','oatmeal'); 
    // Get cookie 
    var favoriteCookie = $cookieStore.get('myFavorite'); 
    // Removing a cookie 
    $cookieStore.remove('myFavorite'); 
}]); 

Case-2: ngStorage Больше ngStorage

Модуль AngularJS, что делает Web Storage работает в угловом пути.

var app = angular.module('MyApp', ["ngStorage"]) 
    app.controller('MyController', function ($scope, $localStorage, $sessionStorage, $window) { 
     $scope.Save = function() { 
      $localStorage.LocalMessage = "LocalStorage: My name is XXX."; 
      $sessionStorage.SessionMessage = "SessionStorage: My name is XXX."; 
     } 
     $scope.Get = function() { 
      $window.alert($localStorage.LocalMessage + "\n" + $sessionStorage.SessionMessage); 
     } 
}); 

Дополнительная помощь

how-to-use-ngstorage-in-angularjs

+0

Как я собираюсь восстановить значение cookie на кнопке браузера, нажмите? –

+0

Вы можете проверить условие, если файл cookie проверен, не сбрасывать его снова, таким образом вы можете это сделать. –

+0

было бы лучшим решением? –

0

Использование $localStorage,

angular.module('myApp') 
     .controller('MyCtrl',function($scope,$localStorage){ 

      window.onhashchange = function() { 

       console.log("triggered"); 

       if($localStorage.user != null){ 

        //get value from $localStorage and set it to scope variable 
        $scope.user = JSON.parse($localStorage.user); 
       } 
      } 
    }); 

В someother контроллера вам необходимо установить $localStorage.user значение, как

$localStorage.user = JSON.stringify({'name':'Geo','age':22}); 

Если это не null, вы можете переназначить его на переменную $scope.user.

+0

Позвольте мне проверить, работает ли он –

+0

, это не сработает, потому что если я сменил хэш, он сгенерирует событие изменения хеша при изменении хеша из кода или при нажатии кнопки возврата. –

+0

Обратите внимание, что это зависит от вашего условия hashchange. Этот ответ будет восстанавливать значение области. –