这是继续下面的stakoverflow问题
Set different hyperlink for same <a> tag (Using AngularJs)
我有2个网址,如下所示。 Pre.html和Block.html
<ul class="dropdown-menu">
<li><a ng-model="data" ng-href="{{ data ? 'Pre.html' : 'Block.html' }}" target="_blank">Pre or Bloc</a></li>
</ul>
这基本上检查控制器中的数据值,如果$ scope.data为true,则加载Pre.html。如果$ scope.data为false,则加载Block.html。
所以,有了这个我能够实现以下
1)用户点击链接。如果控制器中“data”的值为false,则会向用户显示阻止页面
2)用户点击链接。如果控制器上的'data'值为true,则会向用户显示pre.html页面。
但是当用户在URL中键入链接时,即使$ scope.data设置为false,他仍然可以访问Pre.html。
当$ scope.data设置为false时,如何阻止此URL访问。 &GT;任何建议
答案 0 :(得分:3)
这是无法实现的,因为当用户自己键入URL时;您的$ scope更改,不再可访问。
解决这个问题的一种方法是在$ window变量中设置值;这可以从您为Pre.html定义的控制器中进行ping操作。
例如:
var controllers = angular.module('controllers', []);
controllers.controller('PageCtrl', [ '$scope', '$window', $location, function($scope, $window, $location) {
if (some condition) {
$window.sessionStorage.data = true
} else {
$window.sessionStorage.data = false
}
}
如果条件为false,只需将用户重定向回上一页或默认主页。
controllers.controller('PreCtrl', [ '$scope', '$window', $location, function($scope, $window, $location) {
if ($window.sessionStorage.data) {
// Do something?
} else {
$location.path('#/home');
}
}