Angulardart不应该重新加载链接

时间:2014-02-10 21:27:32

标签: dart angular-dart

在angularjs中,您可以禁止在使用时重新加载页面。

<a href="" ng-click="..">text</a>

在angulardart中,链接实际上是导航到href。那是为了吗?

angularjs行为的Goog示例:http://docs.angularjs.org/api/ng.directive:ngHref

<a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)

2 个答案:

答案 0 :(得分:4)

修改

<a href="#" ng-click="ctrl.clickHandler($event)">text</a>

import 'dart:html';

// ...

void clickHandler(MouseEvent event) {
  event.preventDefault(); // suppress default click action
  event.stopPropagation();  // 
  //event.stopImmediatePropagation(); // optional

  // do something else
}

旧回答

我自己还没有使用它,但AngularDart有NgHref指令

https://github.com/angular/angular.dart/blob/master/lib/directive/ng_src_boolean.dart#L60

答案 1 :(得分:1)

另一个解决方案是启用NgRoutingUsePushState,这似乎不会干扰锚链接或ng-click。您只需删除或注释掉RoutingModule中的以下行:

//bind(NgRoutingUsePushState, toValue: new NgRoutingUsePushState.value(false));

要使用推送状态,您还必须让您的网络服务器将网址重写为index.html。它使得在本地开发服务器上运行应用程序稍微复杂一些,但我决定采用它,因为我最终想要这个功能,因为这个bug。一个示例nginx配置是:

location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    # rewrite all to index.html
    rewrite ^(.+)$ /index.html last;
}

注意:使用Angular 0.13.0进行测试