Ответ 1
Вы открываете новое окно, используя другую функцию, которая может смутить Angular.
Попробуйте передать строку в $window.open(real_path)
, где real_path - это строка, содержащая путь, по которому вы хотите перемещаться
У меня есть контроллер 'reportCtrl'
и HTML, который представляет 6 таблиц с данными и только несколько строк, которые я показываю сразу.
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'});
В каждой таблице есть одна кнопка, которая при щелчке должна открывать новую вкладку в браузере с расширенной таблицей:
scope.onClick = function(path){
var real_path = $location.path() + '/' + path + '/';
$location.path( real_path );
// $window.open($location.path()); // doesn't work
};
Например, у меня есть URL-адрес корневого представления:
http://dev.test.com/reports/date/#/showreport
Теперь, после нажатия кнопки, я хочу создать:
http://dev.test.com/reports/date/#/showreport/table_name
и откройте его на новой вкладке. Как вы видите, я пробовал $window.open($location.path());
, но он не работает, ничего не происходит.
Спасибо,
Вы открываете новое окно, используя другую функцию, которая может смутить Angular.
Попробуйте передать строку в $window.open(real_path)
, где real_path - это строка, содержащая путь, по которому вы хотите перемещаться
Если вы хотите открыть страницу angular на новой вкладке на кнопке Ctrl + клик или на той же вкладке, попробуйте следующее: -
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
}
};
Еще один вариант - использовать ng-href
HTML:
<a ng-href="#/courses/{{employee.courseId}}/employees/{{employee.id}}"
target="_blank"> {{employee.employeeNumber}}
</a>
Где url основан на том, где вы хотите перенаправить
Для открытия нового представления в новом окне выполните следующий код:
window.open($location.$$absUrl.replace($location.$$path,NEW_PATH), '_blank');
Хотя самый проголосовавший ответ здесь может работать для большинства сценариев, я хочу добавить способ, которым я нашел для достижения того, что хочет OP (мне тоже это нужно):
var viewPath = '/InsideMyView';
var currentPath = window.location.href.substr(0, window.location.href.indexOf('#') + 1);
var fullPath = currentPath + viewPath;
$window.open(fullPath, '_blank');
Объяснение. Вам просто нужно получить корневой URL для своего приложения, и вы можете использовать #
в URL-адресе (который добавлен angular), а затем объединить представление путь для получения полного URL-адреса.
Это сработало для меня.
HTML:
<div ng-click="OpenBrowserInNewTab(someKeyValue)"</div>Click Me </div>
Контроллер:
`$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`
Открытие нового вклада с параметром angular
<a target="_blank" class="btn" data-ng-href="@Url.Action("Hotel", "Home")?hotelCode={{hotel.code}}"> Click Hear</a>
попробуй это 👇
window.open(yourURL+'create-account',)
window.open
по умолчанию открыть ссылку в новой вкладке