Я читал похожие вопросы/ответы на 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');
}
попробуйте использовать '$ location.path' вместо' $ window' – v1shnu
Я хотел бы, чтобы открыть содержимое в новой вкладке, поэтому я использую $ окно. – Asterisk
'$ window.open' откроет URL-адрес на новой вкладке, которая не будет иметь' $ scope' вашего углового приложения, поскольку '$ scope' привязан только к окну, в котором инициализируется ng-app. Вот почему вы получаете Не найдено. – v1shnu