似乎使用直接属性和ng-attr-*指令做同样的事情.例如,以下呈现等效:
<div ng-attr-id="{{ 'object-' + value }}">ID</div>
<div id="{{ 'object-' + value }}">ID</div>
Run Code Online (Sandbox Code Playgroud)
我ng-attr-*什么时候应该使用,何时应该使用直接HTML属性?
我想要做的就是在链接到外部网站的部分的html中包含一个锚标记.如果是这个标准的html,代码就是:
<a href="http://www.google.com" target="_blank">google</a>
Run Code Online (Sandbox Code Playgroud)
就像这一样简单,我似乎无法找到一个有效的解决方案来过去角度拦截路线(或者无意中用https://docs.angularjs.org/api/ng/directive/a指令替换我的锚点?) .
我已经搜索了SO和网络的其余部分并看到了无数的处理解决方案:同一域内的链接,SPA内的路由,页面内的路由(ala $ anchorScroll)但这些都不是我的问题.
我怀疑它可能与使用$ sce有关,但我是Angular n00b并且不确定如何正确使用该服务.我在视图控制器中尝试了以下内容:
$scope.trustUrl = function(url) {
return $sce.trustAsResourceUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
与相应的:
<a ng-href="{{ trustUrl(item) }}">Click me!</a>
Run Code Online (Sandbox Code Playgroud)
(如下所述:在angularjs模板中绑定外部URL)
但这似乎没有做到这一点(我最终只在渲染页面中使用了href ="{{").
使用像这样的普通香草锚链接:
<a href="http://www.google.com">google</a>
Run Code Online (Sandbox Code Playgroud)
也没有做到这一点(尽管一些在线建议标准href会导致完整的页面重新加载角度:AngularJS - 我如何进行整页加载的重定向?).
我也尝试添加target = _self"属性,但这似乎也没有效果.
我是否需要编写如此处所述的自定义指令?
有条件地将target ="_ blank"添加到与Angular JS的链接中
对于这样一个简单的动作来说,这一切看起来都太复杂了,我觉得我在遗漏中遗漏了一些明显的东西,至少我希望如此,因为这个过程只是为了链接到另一个网址而感到非常繁重.
提前感谢任何解决方案,建议,参考或指导.
在Angular应用程序中,我有一个需要具有以下行为的超链接列表:
如果存在某种条件(例如,如果某个cookie的值为x),则单击超链接应该打开一个模态窗口;
如果不满足此条件(例如,如果cookie具有值y),则超链接应以其通常的方式操作并在新选项卡中打开链接.
超链接的格式如下:
<a ng-href="{{article.url}}" target="_blank" ng-click="myFunction()">
{{article.title}}
</a>
Run Code Online (Sandbox Code Playgroud)
我对如何实现这样的行为感到困惑.如果我离开都ng-href和ngclick指令,然后ng-href将插入网址和每次点击都会在新标签中打开一个页面.如果我删除该ng-href指令,那么在另一个选项卡中打开链接的唯一方法是通过javascript,但大多数浏览器都会阻止这种情况.我想不出ng-href有条件的方法(例如,写作<a ng-href="myCondition === true ? {{article.url}} : '#'">不起作用).
能否请您介绍一下如何在Angular中实现这样的功能?