link - Angularjs $ state abrir enlace en nueva pestaña
ng-href angular 5 (7)
Estoy tratando de implementar una función de "abrir enlace en una nueva pestaña" usando la función $ state.go. Sería increíble si hubiera algo como:
$state.go(''routeHere'', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
¿Hay alguna manera de hacer eso usando AngularJS?
¡Prueba esto!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>
Acabo de intentar esto; aparentemente, agregar target="_blank"
funciona con ui-sref
:
<a ui-sref="routeHere" target="_blank">A Link</a>
Ahorra la molestia de agregar código a su controlador y le da la URL al pasar el mouse como con cualquier enlace normal. Ganar-ganar
Actualización: OK, acabo de resolverlo usando el siguiente código:
var url = $state.href(''myroute'', {parameter: "parameter"});
window.open(url,''_blank'');
Es posible que no funcione en localhost en el caso de que su aplicación esté en una subcarpeta. De hecho, tuve el mismo problema.
Lo he intentado en línea y funcionó como se esperaba usando:
<a ui-sref="routeHere" target="_blank">Link</a>
La mejor respuesta que encontré fue la extensión de la interfaz de usuario, ya que la función no existe incorporada. Puede encontrar todos los detalles aquí:
Extendiendo el $ state.go del enrutador ui Angular 1.x
Sin embargo, aquí está mi breve explicación de lo que se debe hacer, agregue esto a app.js o al archivo de inicio de la aplicación angular:
angular.module("AppName").config([''$provide'', function ($provide) {
$provide.decorator(''$state'', [''$delegate'', ''$window'',
function ($delegate, $window) {
var extended = {
goNewTab: function (stateName, params) {
$window.open(
$delegate.href(stateName, params, { absolute: true }), ''_blank'');
}
};
angular.extend($delegate, extended);
return $delegate;
}]);
}]);
En tu codigo
Podrás hacer:
$state.goNewTab(''routeHere'', { parameter1 : "parameter"});
Tuve un problema similar, intente esto si nada de las respuestas anteriores funciona para usted.
var url = ''#'' + $state.href(''preview'');
window.open(url,''_blank'');
Básicamente, mientras trabajaba en localhost, sin añadir ''#''
solo estaba redirigiendo a
localhost / vista previa
, en lugar de
localhost / Project_Name / # / preview
No estoy hablando de pasar los datos, solo para abrir $ state en una nueva pestaña.
ui-sref="routeHere" href=""target="_blank"
Este código solucionó mi problema.
Use esto en una etiqueta de anclaje.