Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS中使超链接行为有条件_Angularjs_Hyperlink_Angularjs Ng Click - Fatal编程技术网

在AngularJS中使超链接行为有条件

在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>

在Angular应用程序中,我有一个需要具备以下行为的超链接列表:

  • 如果存在某个条件(例如,如果某个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);
};