Angularjs. Открыть контент в новой вкладке

0

Я читал похожие вопросы/ответы на SO, но не могу решить свою проблему. Вот настройка: index.html

<li ng-repeat="a in article">
   <a ng-click="articleDetails(a.id)">
     {{a.title_en}}
   </a>
</li>

js файл

angular.module('myApp.article', ['ngRoute'])
    .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
        $routeProvider.when('/article/:id', {
            templateUrl: 'article/article.html',
            controller: 'ArticleDetailCtrl'
        });
        //$locationProvider.html5Mode(true);
    }])        
    .controller('ArticleDetailCtrl', ['$http', '$routeParams', '$scope', '$window', '$location',
        function ($http, $routeParams, $scope, $window, $location) {
           $scope.params = 'blabla';
        }])

article.html

<div>{{params}}</div>

Вопрос: Когда я нажимаю ссылку в index.html, новая вкладка открывается, как ожидалось, с правильным URL-адресом, однако, вместо деталей статьи, которые я получаю Не найден на веб-странице. Что может быть проблемой?

EDIT 1: Функция articleDetail определяется следующим образом в другом контроллере, который используется в index.html:

$scope.articleDetails = function (id) {
                $scope.id = id;
                $scope.window = $window.open('article/' + id, '_blank');
            }
  • 0
    попробуйте использовать $location.path вместо $window
  • 0
    Я хотел бы открыть контент в новой вкладке, поэтому я использую $ window.
Показать ещё 1 комментарий
Теги:
templates
routing

1 ответ

1
Лучший ответ

Вы не можете сохранить область своего углового приложения в другом окне. Следовательно, вызов $window.open откроет новое окно, которое не имеет вашей исходной $scope.

Область привязки привязана только к окну, в котором инициализируется ngApp.

Чтобы преодолеть это, вы можете использовать LocalStorage вашего браузера.

EDIT: Пожалуйста, обратитесь к этому

Ещё вопросы

Сообщество Overcoder
Наверх
Меню