【问题标题】:Angulardart should not make links reloadAngulardart 不应该让链接重新加载
【发布时间】:2014-02-10 21:27:32
【问题描述】:

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

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

在 angulardart 中,链接实际上是导航到 href。这是故意的吗?

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

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

【问题讨论】:

  • 当我想创建一个不改变路由的按钮时(在 angularJS 中),我总是使用没有 href/ng-href 属性的锚标记,在我看来,它在 angularDart 中也可以正常工作。 . 这符合你的行为要求吗?
  • @doodeec 有效,但它将光标变成文本选择器而不是不是很理想的指针

标签: dart angular-dart


【解决方案1】:

编辑

<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

【讨论】:

  • 使用 ng-href 以便表达式可以在 href 内进行计算。使用常规 href 时,用户首先可以点击 {{musthash}}。但在我的情况下,我想一起禁用导航并调用 ng-click。
  • 感谢您的更新。我必须说,这个解决方案看起来相当乏味。我也不得不使用 stopPropagation()。仅使用 preventDefault() 仍然执行导航。
  • 是的,这是当前的解决方法,我同意它不太理想。也许试试这个:github.com/pavelgj/route.dart/commit/…
  • 我的回答可能已经过时了。我有一段时间没有使用 Angular.dart,不知道在此期间是否有更好的选择。
【解决方案2】:

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

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

要使用推送状态,您还必须让您的网络服务器将 URL 重写为 index.html。它使在本地开发服务器上运行应用程序变得更加复杂,但我决定继续使用它,因为我最终想要那个功能并且因为这个错误。一个示例 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 测试

【讨论】:

  • 请注意,如果您有嵌套路由(例如http://example.com/category/page),则必须绝对引用所有内容。我遇到了一些奇怪的问题,Chrome 和 Chromium 内存不足,因为我的组件相对指定了 templateUrl,而不是绝对指定,并且找不到资源。例如我的代码是templateUrl: 'packages/mypackage/component/mycomponent.html',而它应该是templateUrl: '/packages/mypackage/component/mycomponent.html'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2012-06-23
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多