Sto tentando di aggiornare $location.path
da una direttiva AngularJS. Non funziona come previsto, ovvero aggiornare l'URL visualizzato nella finestra del browser e mostrare diversi contenuti sulla mia pagina. Le mie funzioni vengono sicuramente chiamate con i valori corretti, come si vede nella console. Penso che $location.path
potrebbe avere qualche effetto, perché quando faccio clic sul collegamento, vengono richiamate alcune funzioni aggiuntive che verrebbero richiamate nella nuova pagina, solo la nuova pagina non verrà mai visualizzata. Quando uso $location.path
all'interno di un controller, funziona come previsto, ma non nella mia direttiva.
Ecco il codice HTML per la mia direttiva:
<div detail-link="/comments?post={{post.postId}}" ng-click="clickDetailLink()"></div>
Ecco la definizione della direttiva (in CoffeeScript):
directives.directive 'detailLink', ['$location', ($location) ->
return (scope, element, attrs) ->
scope.clickDetailLink = ->
console.log "loading " + scope.detailLinkHref
$location.path scope.detailLinkHref
attrs.$observe 'detailLink', (value) ->
console.log "set detail link to " + value
scope.detailLinkHref = value
]
ho la minima idea di quello che sta succedendo qui ... la mia $routeProvider
è impostato per gestire /comments
ma qui sto cercando di aggiungere una stringa di query al percorso. Se utilizzo un normale <a href="#/comments?post={{post.postId}}">
, ciò funziona correttamente, ma in qualche modo impostare lo stesso percorso tramite $location.path
non funziona. Questo è indipendentemente dal fatto che questo codice sia nel controller o nella direttiva.
Hmm, sì. Questo risolve il problema, ma non risolveva ancora il vero problema. Ora ho $ applicato già in corso. Inserendolo in un '$ timeout' corregge il bit" già in corso "ma non aggiorna il percorso. Modificherò la mia domanda .. grazie! – jab
Si potrebbe anche voler esaminare $ log. –
Dovresti essere in grado di fare tutto questo nel tuo controller. –