似たような質問が既にあったように感じますが、私は答えを見つけることができませんでした。Aureliaの子ルーティングはどのようにパラメータで動作しますか?
私はその機能によってアプリケーションを分離しようとしています。理想的には、各機能は独自のルーティングを設定することができ、Aureliaの子ルーター機能は完璧にフィットしているように見えますが、問題なく機能するようになっています。
アプリケーションの構造は、次のような次のとおりです。
app.ts
app.html
/lectures
list.ts
list.html
details.ts
details.html
index.ts
index.html
私が質問に答えるために、必要に応じて他のファイルのいずれかを含むことができますが、できるだけコンパクト質問を維持しようとしました。 app.html
とlectures/index.html
ファイルには、両方とも<template><router-outlet></router-outlet></template>
が含まれています。
import { Router, RouterConfiguration } from 'aurelia-router';
export class App {
configureRouter(config: RouterConfiguration, router: Router) {
config.options.pushState = true;
config.map([
{
moduleId: './public-site/lectures',
name: 'lectures',
nav: true,
route: ['', 'lectures/:id?'],
title: 'Lectures'
}
]);
}
}
lecture/index.ts
import { Router, RouterConfiguration } from 'aurelia-router';
export class Index {
configureRouter(config: RouterConfiguration, router: Router) {
config.options.pushState = true;
config.map([
{ route: '', moduleId: './list' },
{ route: ':id', moduleId: './details' }
]);
}
}
をし、私はlectures/details.ts
import { NavigationInstruction, RouteConfig, RoutableComponentActivate } from 'aurelia-router';
export class LectureDetails implements RoutableComponentActivate {
activate(params: any, routeConfig: RouteConfig, navigationInstruction: NavigationInstruction): Promise<any> {
debugger;
}
}
とlecture\list.html
私が持っているapp.ts
lecture\list.ts
import { autoinject } from 'aurelia-framework';
import { Router } from 'aurelia-router';
@autoinject()
export class LecturesList {
constructor(private router: Router) {}
navigateToLecture(lecture: {id:number}) {
this.router.navigate(`#/lectures/${lecture.id}`);
}
}
アプリの負荷が、それは正しくナビゲートし、リストページが表示されますが、10
<template>
<div repeat.for="lecture of lectures" class="grid-body-cell" click.delegate="navigateToLecture(lecture)">
${lecture.title}
</div>
</template>
私は、グリッド内の講義のいずれかをクリックすると、へのURLの更新/講義/ 1が、私のデバッガーのステートメントは決してヒットしません。私は何が間違っているのか分かりません。
URLが更新されても、ルータは依然としてアプリケーションをリストコンポーネントに誘導しています。ルータを尊重して子ルータにパラメータを渡す方法はありますか?
子ルータにパラメータを設定させるには、設定を更新する必要がありますか?
ありがとう、私はそれを試してみましょう。私はついにそれを昨夜働かせて、答えとして投稿します。時間があれば、なぜ私のアプローチがそれほど良くないのかを教えてもらえれば、私はそれを愛するでしょう。私はルートの命名を避けようとしていました。なぜなら私の前提は彼らが一意でなければならず、私は紛争を心配する必要がないからです。私はAngularから来ており、最初はAureliaに非常に満足していましたが、このようなことがたくさんあり、私に再考させています。 – peinearydevelopment
名前付きルートは要件ではなく、私が個人的に提案するものです。私は、衝突を防ぐために、ルート名の前にビューモデルの名前を付けるという命名パターンに従います。あきらめないと、すぐにすべてがクリックし始めて、あなたが物事がどのようにつながっているかを知ったら、正しい選択をAureliaに切り替えることができます。助けが必要な場合は、間違いなく公開のGitterチャンネルに立ち寄ってください(コアチームメンバーがそこにいて、時には質問に答えます)。 –
ありがとうございます。私は間違いなく奇跡のチャンネルを見せてくれるでしょう。 Aureliaはとてもエレガントに見えますが、私が今までに見つけたのは、それが大きな価格になるということです。物事は常に直感的ではなく、文書が欠けています。私がそこでしたいことが何であれ、私は比較的簡単にやり方を見つけることができました。私は私のために働くものを掲載しました。あなたが瞬間があり、それについてコメントすることができれば、私はそれを高く評価します。ありがとう! – peinearydevelopment