我已经在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中的链接时,新标签按预期正确打开,但是,我没有找到文章详情未找到网页。可能有什么问题?
编辑1 :函数articleDetail在index.html中使用的另一个控制器中定义如下:
$scope.articleDetails = function (id) {
$scope.id = id;
$scope.window = $window.open('article/' + id, '_blank');
}
答案 0 :(得分:2)
您无法在另一个窗口中保留Angular应用程序的范围。因此,调用$scope
会打开一个没有原始ngApp
的新窗口。
范围仅与初始化LocalStorage
的窗口相关联。
为了解决此问题,您可以使用浏览器的document.body.innerHTML += '<div style="position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.5);"></div>';
。
编辑:请参阅this