2015-07-27 2 views
0

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

<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' – v1shnu

+0

Я хотел бы, чтобы открыть содержимое в новой вкладке, поэтому я использую $ окно. – Asterisk

+1

'$ window.open' откроет URL-адрес на новой вкладке, которая не будет иметь' $ scope' вашего углового приложения, поскольку '$ scope' привязан только к окну, в котором инициализируется ng-app. Вот почему вы получаете Не найдено. – v1shnu

ответ

1

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

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

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

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

Смежные вопросы