3

考慮してください(AngularDartチュートリアルからの抜粋):

router.root
  ..addRoute(
      name: 'add',
      path: '/add',
      enter: view('view/addRecipe.html'))

URL はどのようにそのようなパスと一致しますか? /add/*or Maybeのような暗黙のワイルドカードサフィックスはあり/add*ますか? もしそうなら、たとえば、との競合を避けるため /addに正確に一致させるにはどうすればよいですか?/add/address

4

2 に答える 2

4

正解です。UrlTemplate単純なプレフィックス マッチを行うため、/addにマッチし/addressます。

1 つのパスがたまたま別のパスのプレフィックスである 2 つのルート間の競合が心配な場合は、最も具体的なパスを最初に配置するのが正しいアプローチです。例えば:

router.root
  ..addRoute(
      name: 'address',
      path: '/address',
      enter: view('view/address.html'))
  ..addRoute(
      name: 'add',
      path: '/add',
      enter: view('view/addRecipe.html'))

ルーターは、指定された順序でルートを照合するため、最初に一致したものを選択します。この方法/addressは常にaddressルートに一致し、常にルートに/add一致しaddます。

/addFootoの意図しない一致が心配な場合は、残念/addながら現時点ではそれを確実にする簡単な方法はありません。強くお考えの場合は、route_hierarchical パッケージに対して機能リクエストを提出してください。

于 2014-01-31T14:52:47.963 に答える
0

ソース コード (route_hierarchial パッケージの client.dart、AngularDart で使用されます) を確認すると、パスがマップへのキーとして使用されていることがわかります。これは、パスが に設定されている場合、/add一致しないことを意味します/address

于 2014-01-31T12:32:50.760 に答える