Necesito la ruta actual desde url en la plantilla (contenido de $ location.path). Pero no a través del controlador, porque tengo muchos controladores (y no quiero duplicar la declaración de $scope.currentUrl = $location.path;
). Gracias por el consejo.
Respuesta
La plantilla AngularJS solo puede ver lo que está disponible en un ámbito, por lo que necesitará de alguna manera poner $ servicio de localización en un ámbito. Hay un alcance que siempre está disponible en la aplicación AngularJS llamado $ rootScope, por lo que podría usarse para su caso de uso.
Lo que podría hacer es utilizar el método run() de un módulo para exponer $ ubicación en el $ rootScope:
var myApp = angular.module('myApp', []).run(function($rootScope, $location) {
$rootScope.location = $location;
});
esto haría 'ubicación' disponible en todas las plantillas de modo más adelante se podría hacer en su plantilla:
Current path: {{location.path()}}
Una alternativa es utilizar el más semántica y versátil ui-router, a continuación, en el controlador, retrieve the current state, y almacenarla en la $scope
:
app.controller('MyCtrl', ['$scope', '$state', function MyCtrl($scope, $state) {
$scope.state = $state.current.name;
...
}
¿Por qué los votos a favor, si puedo preguntar? –
funcionó bien para mí. –
Creo que los votos a favor son tal vez porque incluso si OP usaba ui-router (y este problema por sí solo no es razón suficiente para migrar) esto devuelve el nombre de estado, que es completamente diferente al de la URL (que también incluirá cualquier dinámica params). Por ejemplo, en mi aplicación, para la ruta: "/ graphs/56ce3/edit", su código devuelve el nombre del estado, "edit.graph". En palabras de Hipérbole y Half "No, mira, esa solución es para un problema diferente al que tengo". :) – 0x24a537r9
- 1. AngularJS Paginación con $ location.path pero no ngView reload
- 2. Cómo puedo decirle a AngularJS que "actualice"
- 3. ¿Cómo pasar la variable AngularJS a Javascript?
- 4. Cargar plantilla AngularJS dentro de la página, dinámicamente
- 5. ¿Cómo puedo transmitir un objeto en Angularjs?
- 6. ¿Cómo puedo detectar onKeyUp en AngularJS?
- 7. ¿cómo puedo obtener intellisense en una plantilla T4?
- 8. ¿Cómo puedo inyectar html real del modelo a la plantilla?
- 9. Django: ¿Cómo puedo obtener un bloque de una plantilla?
- 10. AngularJS: Variaciones en una plantilla basada en un atributo
- 11. ¿Cómo puedo sobrescribir la plantilla @ Html.LabelFor?
- 12. ¿Cómo hacer una lista a la plantilla?
- 13. Opuesto a $ routeChangeSuccess en AngularJS
- 14. ¿Cómo puedo establecer un nombre de modelo dinámico en AngularJS?
- 15. templates angularjs en la extensión de cromo
- 16. Cómo AngularJS Fecha de json
- 17. AngularJS: ¿Cómo puedo crear controladores en varios archivos
- 18. AngularJS: el restablecimiento de $ scope.value no cambia el valor en la plantilla (comportamiento aleatorio)
- 19. Cómo probar las directivas AngularJS
- 20. Cómo borrar un filtro - AngularJS
- 21. ¿Cómo obtener el nombre de archivo de la plantilla actual dentro de la plantilla de Jinja2?
- 22. ¿Cómo obtener Meteor.Call para devolver el valor de la plantilla?
- 23. AngularJS - Modelo de actualización basado en la URL
- 24. ¿Cómo puedo obtener los errores de un campo individual en la plantilla de ramitas Symfony2?
- 25. ¿Por qué no puedo pasar los parámetros de la plantilla a otra plantilla?
- 26. AngularJS - Usar parciales dinámicamente en otros parciales
- 27. ¿Cómo obtener el valor clave en la plantilla django?
- 28. ¿Cómo obtener la ruta a la plantilla actual en Joomla 1.5?
- 29. ¿Cómo puedo obtener la arquitectura de un archivo '.a'?
- 30. Cómo obtener instancias de ModelChoiceField en la plantilla
En una plantilla de directiva que tiene su propio alcance, debe usar 'Ruta actual: {{$ parent.location.path()}}' – benweet
Es una buena costumbre usar '{{$ root.location. xxx}} 'ya que cualquier directiva con un alcance aislado no tendría acceso a ella mediante el método abreviado y el' $ parent.location' no es confiable según la profundidad de su alcance. '$ root' siempre funciona. –