我正在编写一个角落飞镖应用程序,该应用程序包含一些指向服务器上其他资源的链接。 我有一种奇怪的经历,有些链接是"处理"通过角度而不是一些。
例如在代码中我有这两个彼此接近的链接。两者都在相同的控制器范围内。第一个链接由angular处理,第二个链接在配置的单独窗口中打开。 (也许是由于网址中的hashbang?)
...
<div class="span4">
<div class="address">Direktlink</div>
<a href="http://localhost/#!h_name=Aachen&h_variant=8&d_sel=23" target="_blank" class="ng-binding">not working link</a>
</div>
</div>
<div class="row-fluid">
<div class="span12 modal_image">
<a href="http://localhost/modules/mod_orchit_baumodul/ajax/composite.php?haus=Aachen&variante=8&pos=0" target="_blank" class="ng-binding"> <img src="http://localhost/modules/mod_orchit_baumodul/ajax/composite.php?haus=Aachen&variante=8&pos=0" class="ng-binding"></a>
</div>
</div>
</div>
所以我创建了一个小指令
/**
* https://github.com/angular/angular.dart/issues/335
* https://github.com/angular/angular.dart/issues/864
*/
@NgDirective(
selector: 'a[externalLink]'
)
class ExternalLinkDirective {
Element element;
ExternalLinkDirective(this.element) {
element.onClick.listen((Event event){
window.location.assign(element.attributes["href"]);
});
}
}
但这样做的缺点是我无法在新的标签页或窗口中打开链接。 我无法在API文档中找到帮助我的东西。 : - (
有没有办法在新标签页中打开第一个链接?
答案 0 :(得分:3)
好的,我明白了。但它每次都打开一个新窗口,所以我先检查目标。 您可以自己使用此指令。
/**
* https://github.com/angular/angular.dart/issues/335
* https://github.com/angular/angular.dart/issues/864
*/
@NgDirective(selector: 'a[externalLink]')
class ExternalLinkDirective {
Element element;
ExternalLinkDirective(this.element) {
element.onClick.listen((Event event) {
String target = "_SELF";
if (isValidTarget()){
window.open(element.attributes["href"], element.attributes['target']);
}
else window.location.assign(element.attributes["href"]);
});
}
bool isValidTarget(){
return element.attributes.containsKey("target") && element.attributes['target'].toLowerCase()!='_self';
}
}
答案 1 :(得分:1)
自 route_hierarchical-0.4.19 以来,这个问题似乎已得到解决。