angularjs - switch - ¿Cómo abrir una nueva pestaña en el navegador usando $ location, angular?
ng-href angular 5 (7)
Tengo el controlador ''reportCtrl''
y HTML que representa 6 tablas con datos y solo varias filas que muestro a la vez.
app.js
var appReport = angular.module(''myAppReport'', []);
appReport.config([''$routeProvider'', function($routeProvider) {
$routeProvider.when(''/showreport'', {templateUrl: ''app/reports/reportsView.html'', controller: ''reportCtrl''});
$routeProvider.when(''/showreport/:type'', {templateUrl: ''app/reports/reportsView.html'', controller: ''reportCtrl''});
Cada tabla tiene un botón que al hacer clic, debe abrir una nueva pestaña en el navegador con la tabla extendida:
scope.onClick = function(path){
var real_path = $location.path() + ''/'' + path + ''/'';
$location.path( real_path );
// $window.open($location.path()); // doesn''t work
};
Por ejemplo tengo URL de vista de raíz:
http://dev.test.com/reports/date/#/showreport
Ahora, después de presionar el botón quiero crear:
http://dev.test.com/reports/date/#/showreport/table_name
y abrirlo en nueva pestaña. Como ve, probé $window.open($location.path());
Pero no funciona, no pasa nada.
Gracias,
Aunque la respuesta más votada aquí puede funcionar para la mayoría de los escenarios, quiero agregar la forma que encontré para lograr lo que OP quiere (también lo necesitaba):
var viewPath = ''/InsideMyView'';
var currentPath = window.location.href.substr(0, window.location.href.indexOf(''#'') + 1);
var fullPath = currentPath + viewPath;
$window.open(fullPath, ''_blank'');
Explicación : solo necesita obtener la URL raíz de su aplicación, y puede hacer uso de #
en la url (que se agrega mediante angular), luego concatenar la ruta de la vista para obtener la url completa.
Está abriendo una nueva ventana con otra función que podría confundirse con Angular.
Intente pasar la cadena en $window.open(real_path)
donde real_path es una cadena que contiene la ruta que desea navegar
Esto funcionó para mí.
HTML: <div ng-click="OpenBrowserInNewTab(someKeyValue)"</div>Click Me </div>
El controlador:
`$scope.OpenBrowserInNewTab = (someKeyValue) ->
tabWindowId = window.open(''/abcdef/ghijk/'' + someKeyValue + '''', _blank'')
$http.post("/abcdef/ghijk/#someKeyValue", data).then (response) ->
tabWindowId.location.href = response.headers(''Location'')
return
return`
Para abrir una nueva vista en una nueva ventana, ejecute el siguiente código:
window.open($location.$$absUrl.replace($location.$$path,NEW_PATH), ''_blank'');
Si desea abrir una página angular en una nueva pestaña en ctrl + clic o en la misma pestaña, intente esto:
HTML:
<a ng-click="navigationUrl($event)">My Link</a>
JS:
var navigationUrl = function (event) {
if (event.ctrlKey) {
window.open(url, ''_blank''); // in new tab
} else {
$location.path(url); // in same tab
}
};
Una opción más es usar ng-href
HTML:
<a ng-href="#/courses/{{employee.courseId}}/employees/{{employee.id}}"
target="_blank"> {{employee.employeeNumber}}
</a>
Donde url se basa en donde quieres redirigir
Vista de apertura en nueva pestaña con parámetro angular.
<a target="_blank" class="btn" data-ng-href="@Url.Action("Hotel", "Home")?hotelCode={{hotel.code}}"> Click Hear</a>