Angularjs。在新标签页中打开内容
Angularjs. Open content in new tab
我在 SO 上阅读过类似的 questions/answers,但无法解决我的问题。
这是设置:
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 中的 link 时,新选项卡按预期打开并显示正确的 url,但是,而不是文章详细信息我在网页上得到 未找到。可能是什么问题?
编辑 1:函数文章详细信息在 index.html 中使用的另一个控制器中定义如下:
$scope.articleDetails = function (id) {
$scope.id = id;
$scope.window = $window.open('article/' + id, '_blank');
}
您不能在另一个 window 中保留您的 Angular 应用程序的范围。因此调用 $window.open
将打开一个新的 window,它没有您原来的 $scope
。
范围仅绑定到初始化 ngApp
的 window。
为了克服这个问题,您可以使用浏览器的LocalStorage
。
编辑: 请参考 this
我在 SO 上阅读过类似的 questions/answers,但无法解决我的问题。 这是设置: 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 中的 link 时,新选项卡按预期打开并显示正确的 url,但是,而不是文章详细信息我在网页上得到 未找到。可能是什么问题?
编辑 1:函数文章详细信息在 index.html 中使用的另一个控制器中定义如下:
$scope.articleDetails = function (id) {
$scope.id = id;
$scope.window = $window.open('article/' + id, '_blank');
}
您不能在另一个 window 中保留您的 Angular 应用程序的范围。因此调用 $window.open
将打开一个新的 window,它没有您原来的 $scope
。
范围仅绑定到初始化 ngApp
的 window。
为了克服这个问题,您可以使用浏览器的LocalStorage
。
编辑: 请参考 this