在新标签/窗口中打开angulardart中的外部链接

时间:2014-04-16 12:15:02

标签: dart angular-dart

我正在编写一个角落飞镖应用程序,该应用程序包含一些指向服务器上其他资源的链接。 我有一种奇怪的经历,有些链接是"处理"通过角度而不是一些。

例如在代码中我有这两个彼此接近的链接。两者都在相同的控制器范围内。第一个链接由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文档中找到帮助我的东西。 : - (

有没有办法在新标签页中打开第一个链接?

2 个答案:

答案 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 以来,这个问题似乎已得到解决。