AngularJS kullanarak yeniden yönlendirme


86

Şunu kullanarak başka bir rotaya yönlendirmeye çalışıyorum:

$location.path("/route");

Ama nedense çalışmıyor. JQuery-UI kullanarak bir otomatik tamamlama bileşeni yaptım ve kullanıcı bir seçenek belirlediğinde kapsamdan bir işlev çağırıyorum. Hata ayıkladım ve işleve giriyor ama asla diğer rotaya yönlendirilmiyor. Sadece bir tuşa bastığımda rotayı değiştiriyor.

Sanırım biraz tuhaf ama bunu nasıl çözeceğimi bulamadım. kullandım

window.location = "#/route";

ve çalışıyor ama path()işlevi kullanmak istiyorum .

Bunun neden olduğu hakkında bir fikri olan var mı?

Yanıtlar:


109

Çalışmayan kodun bir örneğiyle, bu soruyu cevaplamak kolay olacaktır, ancak bu bilgiyle düşünebildiğim en iyi şey, AngularJS özetinin dışında $ location.path'i çağırmanızdır.

Bunu yönergede yapmayı deneyin scope.$apply(function() { $location.path("/route"); });


Çok teşekkür ederim ve çalışmayan örneği yayınlamadığım için üzgünüm. Ancak kodumun ihtiyacı olan buydu.
Tomarto

23
Bunun bir $ http isteğinin içinde .success yöntemiyle nasıl çalıştırılacağına dair bir fikriniz var mı? @Tomarto
Nicholas Kreidberg

2
firefox (30 ~) konsolunda, $ apply döngüsünün meşgul olduğu şeklinde bir hata
tetikleniyor

1
Bunun nasıl çalışması gerekiyor? Şu hatayı alıyorum: Hata: [$ rootScope: inprog] $ zaten devam ediyor error.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply angular.js : 78 ..... dolayısıyla windows.location = '' ..
Vaibhav

1
@NicholasKreidberg de aynı soruyu sordu ve sadece $ kapsam ekliyordu. $ Apply (); $ location.path ("/ route") 'den hemen sonra; benim için çalıştı.
Ernesto Allely

81

$locationKontrol cihazına enjekte etmeyi unutmayın .


2
Güzel yakalama - benim için sorun buydu.
Jason Swett

Güzel, bunu gönderdiğiniz için teşekkür ederim, bu kadar açık görünen şey değildi.
Chuck Conway

20

Html5 yönlendirmesini kullanmadığınızı varsayarak deneyin $location.path("route"). Bu, tarayıcınızı #/routeistediğiniz şeye yönlendirecektir .


15

Açısal uygulamanızın dışına yönlendirmeniz gerekiyorsa kullanın $window.location. Benim durumum buydu; umarım birisi onu faydalı bulacaktır.


2

Yönlendirme yönteminizi kontrol edin:

yönlendirme durumunuz böyle ise

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

o zaman kullanmalısın

$location.path("/app/register");

0

Kodunuzu bilmeden söylemek zor. En iyi tahminim, onchangemetin kutusu değerinizi JavaScript kodundan değiştirdiğinizde etkinliğin tetiklenmemesidir.

Bunun işe yaraması için iki yol vardır; birincisi onchangekendiniz aramak , ikincisi ise metin kutusunun odağını kaybetmesini beklemek.

Bu soruyu kontrol edin ; aynı konu, farklı çerçeve.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.