我正在编写一个 Angular dart 应用程序,该应用程序包含一些指向服务器上其他资源的链接。 我有一个奇怪的经历,有些链接是由角度“处理”的,有些则不是。
例如,在代码中我有这两个彼此靠近的链接。两者都在同一 Controller 范围内。第一个链接由 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 文档中找不到对我有帮助的内容。 :-(
有没有办法在新选项卡中打开第一个链接?
最佳答案
好吧,我明白了。但它每次都会打开一个新窗口,所以我首先检查目标。 您可以自行使用该指令。
/**
* 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';
}
}
关于dart - 在新选项卡/窗口中打开 angulardart 中的外部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109193/