2016-04-12 13 views
0

Ben ui yönlendirici ve Angular 1.4.7 kullanıyorum. Bağlam için, denediğim her şey yol boyunca ilerlerken (rotadan uzaklaşıldığında) ya da rota içinde geriye doğru çalışırken çalışır, ancak farklı rotasına geri dönerken asla çalışmaz.Tarayıcı geçmişi sıkışmış nasıl engellenir Tarayıcı geçmişi boyunca geri giderken açısal rota

Yolda kaldığım rotanın denetleyicisinde, rota değişikliklerini güncellemek için $ location.search() işlevini ve bu değişiklikten sonra bir işlevi tetiklemek için $ locationChangeSuccess kullanıyorum. Şu anda farklı bir rotaya geri dönmeye çalışırsam rotada takılıyorum. Ben rotayı tespit etmek için $ locationChangeStart ve $ locationChangeSuccess kullanarak denedim (newUrl ve oldUrl params dilimleme yoluyla), ben tekrar gitmek için çalışıyorum, ama her zaman geçerli yol olarak gösterir (ancak eğer bu işe yaramazsa) ileriye doğru seyir).

Güncelleme: kodun bazı

// routeIGetStuckOn.js excerpt 
$stateProvider 
    .state('routeIGetStuckOn', { 
    url: '/routeIGetStuckOn?optionalParams', 
    reloadOnSearch: false, 
    templateUrl: 'app/routes/routeIGetStuckOn/routeIGetStuckOn.html', 
    controller: 'routeIGetStuckOnCtrl', 
    controllerAs: 'vm' 
    }); 

/////////////////////////////////////////////////////////////////////// 
// routeIGetStuckOn.controller.js excerpt 

// When params in URL is updated, fire a function 
$scope.$on('$locationChangeSuccess', function() { 
loadNewData(); 
}); 

//Use $location.search in various different functions with different types of new data 
$location.search('optionalParams', newData); 

Güncelleme: göster Ben durumda cevap olarak sunacak bir çözüm bulduk

URL sorunu herkesten içinde biter bu durum.

  1. Başlat website.com/randomRoute
  2. git de tıklama website.com/routeIGetStuckOn
  3. Güncelleme param adım 2'nin website.com/routeIGetStuckOn için geri düğmesini tarayıcı kullanarak geri dönmek fakat sonuna kadar website.com/routeIGetStuckOn?optionalParams=data
  4. Girişimi Olarak: Ben önlenmesi am budur website.com/routeIGetStuckOn?optionalParams=. Bu kod ekleyerek, amaçlandığı gibi bu noktada, yapamaz yerine website.com/routeIGetStuckOn gidiyor, tarayıcı geçmişini korumak ve website.com/routeIGetStuckOn?optionalParams= için navigasyonu önlemek mümkün oldum 1.
+0

Aralarından gideceğiniz rota ve URL'lerden örnekler verebilir misiniz? Kodu kullanıyorsun? 'StateChangeSuccess' kullanmıyor olmanızın bir nedeni var mı? – tyler

+0

'$ stateChangeSuccess' yalnızca tarih boyunca başka bir rotaya (ya da yalnızca rotayı tıklatarak) ilerlerken tetiklenir. Ne yaptığımı açıklığa kavuşturmak için bazı ilgili kodları alıp alamayacağımı göreceğim. Ancak çok fazla kod var:/ – bananabanana

+0

Düzgün kullanıyorsanız, "$ stateChangeSuccess" bir geri düğmesiyle düzgün şekilde yanacaktır. Her zaman kullanırım ... – tyler

cevap

0

adımın website.com/randomRoute almak için düğmeye tekrar basın :

// Strip unused optional parameter on routeIGetStuckOn home page 
$scope.$on('$locationChangeStart', function(event, next){ 
    if (next.slice(-1) === '=') { 
    $location.url($location.path()); 
    } 
}); 

hâlâ biraz janky hissediyor, ama ben daha iyi bir çözüm bulmak mümkün olmamıştır

.