dart - 在新选项卡/窗口中打开 angulardart 中的外部链接

标签 dart angular-dart

我正在编写一个 Angular dart 应用程序,该应用程序包含一些指向服务器上其他资源的链接。 我有一个奇怪的经历,有些链接是由角度“处理”的,有些则不是。

例如,在代码中我有这两个彼此靠近的链接。两者都在同一 Controller 范围内。第一个链接由 Angular 处理,第二个链接根据配置在单独的窗口中打开。 (也许是由于网址中的 hashbang?)

...
  <div class="span4">
    <div class="address">Direktlink</div>
      <a href="http://localhost/#!h_name=Aachen&amp;h_variant=8&amp;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&amp;variante=8&amp;pos=0" target="_blank" class="ng-binding"> <img src="http://localhost/modules/mod_orchit_baumodul/ajax/composite.php?haus=Aachen&amp;variante=8&amp;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/

相关文章:

dart - 调试 Angular 和 Polymer dart

flutter - 如何在 Flutter 的 TextField 中禁用预测文本?

dart - Flutter First 应用程序

dart - 如何在组件外部访问AngularDart组件属性(NgOneWay),例如。在页面上?

file - Dart 和客户端文件处理(授权)

dart - 格式化时崩溃(Dart sdk: '>=2.0.0-dev.65.0 <2.0.0')

dart - 将长文本包装在父小部件中

dart - 我怎么知道一个库是服务器端、客户端还是两者兼而有之?

flutter - Flutter:访问另一个类/文件中的函数

dart - 我可以在 AngularDart 中将 Future 分配给 Controller 的属性吗?