4

ビューに#/articlesつながるルーティングスキームがあり、につながります。ただし、このネストされた書き込みを宣言する方法がわかりません。ルートを次のように構成すると、 と の両方につながります (両方のパスが r'^articles' に一致するため)。articles.html#/articles/featuredfeatured.html#/articles#/articles/featuredarticles.html

library my_router;

import 'package:angular/angular.dart';

class MyRouteInitializer implements RouteInitializer {
  init(Router router, ViewFactory view) {
    router.root
      ..addRoute(
          name: 'articles',
          path: '/articles',
          enter: view('views/articles.html'),
          mount: (Route route) => route
            ..addRoute(
                name: 'featured',
                path: '/featured',
                enter: view('views/featured.html'))

      );
  }
}

enter: view('views/articles.html')行を省略すると、#/articles/featuredルートは に正しくルーティングされますfeatured.htmlが、 には何もルーティングされませんarticles.html

4

2 に答える 2

6

ネストされたビューを定義すると、ネストされたng-views によってレンダリングされることが期待されますが、実際に必要なものとは思えません。フラット構造を使用することによる回避策は問題ない場合があります。または、次のようなこともできます。

class MyRouteInitializer implements RouteInitializer {
  init(Router router, ViewFactory view) {
    router.root
      ..addRoute(
          name: 'articles',
          path: '/articles',
          mount: (Route route) => route
            ..addRoute(
                name: 'all',
                path: '/all',
                default: true,
                enter: view('views/articles.html')
            ..addRoute(
                name: 'featured',
                path: '/featured',
                enter: view('views/featured.html'))
      );
  }
}
于 2014-01-21T18:05:15.567 に答える
3

mount特定から一般へのルートを回避して定義することでこれを機能させることができますが、解決策は扱いにくく、エラーが発生しやすいようです。正しい方法はmount、ルートを使用して適切にネストすることですが、それを機能させることはできません。その間、ここに一時的な解決策があります:

import 'package:angular/angular.dart';

class MyRouteInitializer implements RouteInitializer {
  init(Router router, ViewFactory view) {
    router.root
      ..addRoute(
          name: 'featured',
          path: '/articles/featured',
          enter: view('views/featured.html'))
      ..addRoute(
          name: 'articles',
          path: '/articles',
          enter: view('views/articles.html'));
  }
}
于 2014-01-20T00:49:22.197 に答える