在第一页加载时,如何从指令(AngularDart)中知道当前路由是什么?

时间:2014-02-03 08:54:59

标签: dart angular-dart

在第一页加载时,如何从指令中知道当前路由是什么?

不确定这是否是错误,或者我没有正确配置。我有一个指令,可以注入路由器。我监听router.onRouteStart个事件,当我最初重新加载页面时,不会触发routeStart事件。当我手动触发路由更改时,我确实得到了routeStart事件。

我的指示如下:

@NgDirective(
    selector: '[current-route]'
)
class CurrentRoute {
  Router router;
  Element element;

  CurrentRoute(this.element, this.router) {
    toggleActive();

    router.onRouteStart.listen((e) {
      toggleActive();
    });
  }

  bool isRoute() {
    print(router.activePath);
    print(router.root);
    if (router.activePath.isEmpty) return false;
    return element.attributes['current-route'] == router.activePath.first.name;
  }

  void toggleActive() {
    if (isRoute()) {
      element.classes.add('active');
    } else {
      element.classes.remove('active');
    }
  }
}

当我第一次

print(router.activePath);   // empty list
print(router.root);  // null

基本上,如果元素与当前路由匹配,我想在元素上设置CSS类。我猜测路由器的指令是可行的方法,但也许有更好的东西。

1 个答案:

答案 0 :(得分:4)

也许您需要等待路由完成:

var subscription;
subscription = router.onRouteStart.listen((e) {
  subscription.cancel();
  e.completed.then((_) {
    toggleActive();
  });
});
相关问题