2014-08-29 3 views
7

Ho già controllato i documenti e il thread ng-href not working qui ma sono bloccato.AngularJS ng-href non va al collegamento

Il ng-href richiede un percorso completo? Il mio attualmente sembra <a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a>, ma quando faccio clic su di esso, mentre cambia correttamente l'URL nella barra degli indirizzi del browser (ed è un URL legittimo, posso premere "invio" nella barra degli indirizzi e "andrà lì"), in realtà non VAI A quella pagina.

Cosa non va? Devo combinare questo con un ng-click di qualche tipo? E se sì, perché?

UPDATE: Il collegamento sta andando alla stessa pagina da cui è stato chiamato, ma con un parametro diverso per una diversa visualizzazione record di dati. Penso che potrebbe avere qualcosa a che fare con esso ...

risposta

1

Ecco come ho finito up risolvere questo:

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(); 
    }; 

Questo sta funzionando come dovrebbe nella nostra applicazione. Perché lo specifico angolare $location e $windownon lavoro c'è un mistero per me, però. Ho provato quelli prima e non l'hanno fatto, quindi se qualcuno può spiegare il motivo, ti darò "accetta risposta" per questa domanda! ;-)

+0

Ciao @ code-sushi, hai trovato un altro modo per farlo? Forse usando la configurazione di AngularJS .. –

+1

Il codice che ho postato sopra, iniziando con "Ecco come ho finito per risolverlo", è il modo in cui ho trovato di farlo. Difficile credere che fosse solo 7 mesi fa - sembra una vita fa! Non sto utilizzando Angular nel mio progetto attuale, quindi non sono sicuro se lo farei diversamente oggi o meno. Sentiti libero di condividere le soluzioni che hanno funzionato per te però. Buona programmazione! –

+0

Ho appena aggiunto una soluzione con un altro modo per farlo, spero che sia di aiuto a qualcuno :) –

0

ho provato il codice e ha funzionato per me:

<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> 

diventa in questo modo:

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

Ma forse perché non si è effettivamente ON "/page.php" quando si fa clic, perché non funziona per me. Ho conferito con un collega che ha confermato che dovrò utilizzare ng-clic. Se trovo la soluzione prima di qualcun altro, la posterò qui. Apprezzo la tua risposta però! –

8

Il modo più semplice per farlo è l'aggiunta target = "_ self", nel tuo caso questa è la soluzione:

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

No ng clic e nessuna funzione AngularJS sono obbligatori.

+0

Dovrò provarlo qualche volta quando posso impostare uno scenario di test case. Da quando ho cambiato lavoro, non ho accesso al progetto precedente che ha originariamente originato questa domanda. Grazie per il suggerimento. –

+0

Questa risposta fa luce: http://stackoverflow.com/a/28802951/284704. Apparentemente Angular tratterà sempre href come URL/location-rewriters all'interno di ngApp fintanto che il servizio $ location viene usato in quel modo. Devi eseguire l'override con target = "_ self" per ottenere il normale comportamento del collegamento. –

-5

Ho avuto questo problema in precedenza. Non mi è stato permesso di avere ng-href all'interno di un ng-controller per qualche motivo.