2014-08-29 14 views
7

Sprawdziłem już dokument i wątek ng-href not working tutaj, ale jestem zakłopotany.AngularJS ng-href nie przechodzi do linku

Czy ng-href wymaga pełnej ścieżki? Mój wygląda teraz jak <a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a>, ale kiedy go klikam, gdy poprawnie zmienia adres URL w pasku adresu przeglądarki (i jest to poprawny adres URL, mogę nacisnąć "enter" w pasku adresu i "pójdzie tam"), w rzeczywistości nie przechodzi do tej strony.

Co się dzieje źle? Czy muszę łączyć to z jakimś rodzajem ng-click? A jeśli tak, to dlaczego, ?

AKTUALIZACJA: Link prowadzi do tej samej strony, z której jest wywoływany, ale z innym parametrem dla innego wyświetlania rekordu danych. Myślę, że może mieć coś z tym zrobić ...

Odpowiedz

1

Oto jak skończyło się rozwiązania tego jeden:

Template:

<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-click="go_to_item(id.num)"> 
    <span>{{title.text}}</span> 
</a> 

Javascript:

$scope.go_to_item = function(display) { 
     window.location = '/page.php#id:' + display; 
     location.reload(); 
    }; 

To działa tak jak powinien w naszej aplikacji. Dlaczego praca specyficzna dla Angulara nie jest dla mnie tajemnicą. Próbowałem tych pierwszych i nie robili tego, więc jeśli ktoś może wyjaśnić dlaczego, dam ci "odpowiedź" na to pytanie! ;-)

+0

Hi @ code-sushi, czy znalazłeś inny sposób na zrobienie tego? Może użycie i konfiguracja AngularJS .. –

+1

Kod, który napisałem powyżej, zaczynając od "Oto, w jaki sposób doszłam do rozwiązania tego", to sposób, w jaki znalazłem to. Trudno uwierzyć, że to było zaledwie 7 miesięcy temu - wydaje się, że minęło całe życie! Nie używam Angulara w moim bieżącym projekcie, więc nie jestem pewien, czy robiłbym to dzisiaj inaczej czy nie. Zapraszam do dzielenia się wszelkimi rozwiązaniami, które pracowały dla Ciebie. Szczęśliwe kodowanie! –

+0

Właśnie dodałem rozwiązanie w inny sposób, mam nadzieję, że komuś to pomoże :) –

0

Próbowałem swój kod i pracował dla mnie:

<script> 
$scope.title = {text: "test"}; 
$scope.id = {num: 123}; 
</script> 

<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a> 

staje się tak:

<a ng-title="test" ng-id="123" ng-href="/page.php#param:123" href="/page.php#param:123"><span>go here</span></a> 
+0

Ale może dlatego, że nie jesteś w rzeczywistości "/page.php" po kliknięciu, ponieważ to nie działa dla mnie. Rozmawiałem ze współpracownikiem, który potwierdził, że będę musiał zamiast tego użyć ng-click. Jeśli wymyślę rozwiązanie przed kimś innym, opublikuję to tutaj. Doceń odpowiedź! –

8

Najprostszym sposobem na to jest dodanie target = "_ self", w Twoim przypadku jest to rozwiązanie:

<a ng-title="{{title.text}}" ng-id="{{id.num}}" 
ng-href="/page.php#param:{{id.num}}" target="_self"> 
<span>go here</span> 
</a> 

Nie ng kliknij i żadna funkcja angularjs są wymagane.

+0

Muszę to wypróbować, kiedy będę mógł skonfigurować scenariusz testowy. Ponieważ zmieniłem pracę, nie mam dostępu do poprzedniego projektu, który pierwotnie wywołał to pytanie. Dzieki za sugestie. –

+0

Ta odpowiedź rzuca trochę światła: http://stackoverflow.com/a/28802951/284704. Wygląda na to, że Angular zawsze traktuje href jako adres URL/redaktor lokacji wewnątrz ngApp, o ile usługa $ location jest używana w ten sposób. Musisz zastąpić parametr target = "_ self", aby uzyskać normalne zachowanie łącza. –

-5

Miałem ten problem wcześniej. Nie mogłem z jakiegoś powodu mieć ng-href wewnątrz ng-controller.

Powiązane problemy