Estoy tratando de implementar una función "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 forma de hacerlo usando AngularJS?
angularjs
angular-ui-router
angular-ui
Alex Arvanitidis
fuente
fuente
Respuestas:
Actualización: OK, lo acabo de resolver usando el siguiente código:
var url = $state.href('myroute', {parameter: "parameter"}); window.open(url,'_blank');
fuente
Acabo de probar esto, aparentemente, agregando
target="_blank"
funciona conui-sref
:<a ui-sref="routeHere" target="_blank">A Link</a>
Ahorra la molestia de agregar código a su controlador y le brinda la URL al pasar el mouse como con cualquier enlace normal. Ganar-ganar!
fuente
<a ui-sref="routeHere" target="_blank" class="btn btn-primary" role="button">A Link</a>
Tuve un problema similar, intente esto si nada de las respuestas anteriores funciona para usted.
var url = '#' + $state.href('preview'); window.open(url,'_blank');
Entonces, básicamente, mientras trabajaba en localhost, sin agregarlo
'#'
, solo estaba redirigiendo a, en lugar de
No me refiero a pasar los datos, solo para abrir $ state en una nueva pestaña.
fuente
Es posible que no funcione en localhost en caso de que su aplicación esté en una subcarpeta. De hecho, tuve el mismo problema.
Lo intenté en línea y funcionó como se esperaba usando:
<a ui-sref="routeHere" target="_blank">Link</a>
fuente
La mejor respuesta que encontré fue extender el ui.router, ya que la función no existe incorporada. Puede encontrar el detalle completo aquí:
Extendiendo $ state.go del ui-router 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 código
Podrás hacer:
$state.goNewTab('routeHere', { parameter1 : "parameter"});
fuente
ui-sref="routeHere" href=""target="_blank"
este código resolvió mi problema.
use esto en una etiqueta de anclaje.
fuente
¡Prueba esto!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>
fuente