在AngularJS中使超链接行为有条件
在Angular应用程序中,我有一个需要具备以下行为的超链接列表:在AngularJS中使超链接行为有条件,angularjs,hyperlink,angularjs-ng-click,Angularjs,Hyperlink,Angularjs Ng Click,在Angular应用程序中,我有一个需要具备以下行为的超链接列表: 如果存在某个条件(例如,如果某个cookie的值为x),单击超链接应打开一个模式窗口 如果不满足此条件(例如,如果cookie的值为y),则超链接应按其常规方式操作,并在新选项卡中打开链接 超链接的格式如下所示: <a ng-href="{{article.url}}" target="_blank" ng-click="myFunction()"> {{article.title}} </a>
- 如果存在某个条件(例如,如果某个cookie的值为x),单击超链接应打开一个模式窗口
- 如果不满足此条件(例如,如果cookie的值为y),则超链接应按其常规方式操作,并在新选项卡中打开链接
<a ng-href="{{article.url}}" target="_blank" ng-click="myFunction()">
{{article.title}}
</a>
我对如何实施这种行为感到困惑。如果我同时保留ng href
和ngclick
指令,则ng href
将插入url,每次单击都将在新选项卡中打开一页。如果我删除ng href
指令,那么在另一个选项卡中打开链接的唯一方法将是通过javascript,但大多数浏览器都会阻止这样做。我想不出一种方法使ng href
有条件(例如,编写
不起作用)
您能建议一种如何在Angular中实现这种功能的方法吗?以下是我的想法。它看起来有点难看,因此如果您有更好的建议,欢迎提供: 我编写了两个具有不同行为的独立锚定标记,并根据是否满足必要条件在它们之间进行选择:
<a href="#" ng-if="checkCookies() === 'show popup'" ng-click="openArticle(article)">
{{$parent.article.title}}
</a>
<a ng-href="{{$parent.article.url}}" target="_blank" ng-if="checkCookies() === 'no popup'">
{{$parent.article.title}}
</a>
在javascript文件中,我编写了checkCookies()
函数来查找特定cookie的值。这对我来说很有效
<a ng-href='{{(element.url.indexOf("#")>-1) ? element.url : element.url + "client_id="}}{{credible.current_client_info.client_id}}'>{{element.title}}</a>
这里有一个对我有用的稍微不同的方法,根本没有使用ng href: HTML:
似乎需要有条件地包括或删除
target
属性。也许看看这里?处理控制器内部的逻辑是否重定向或打开模式弹出窗口
<a ng-click="myFunc()">{{article.title}}</a>
$scope.myFunc = function() {
if (myCondition){
window.open($scope.article.url,'_self',false);
}
window.open("/#/",'_self',false);
};