私のshell.jsファイルのボタンにクリックバインディングがあります。クリックはあなたに戻ってきますDurandal routing IF文
function goBack() {
return router.navigateBack();
}
私はこの正確な動作をコピーしたくない特定のルート(reportForm)を持っています。私は戻る前に確認メッセージを導入しようとしています。
function goBack() {
if (router.routes[7].moduleId === "viewmodels/reportForm") {
return router.navigateBack();
} else {
return app.showMessage(strings.logoutWarning, strings.logout, [strings.no, strings.yes])
.then(function (answer) {
if (answer === strings.yes) {
return router.navigateBack();
}
})
}
}
現在のルートがわからないようです。私は自分の現在のポジションを見つけ、これが一致するかどうかを調べる必要があります。現在、それが存在するかどうかをチェックするので、常に同じステートメントが返されます。私が上記のことを達成しようとすると、Durandalの経験を持つ人が私を助けることができたら、私はとても感謝しています。ここで
は私のデュランダルルータマップ(私はこのメッセージを表示したいそのreportForm)です:
function activate() {
router.map([
{ route: '', title: 'Welcome', moduleId: 'viewmodels/login', nav: true },
{ route: 'home', moduleId: 'viewmodels/home', nav: true },
{ route: 'log', moduleId: 'viewmodels/log', nav: true },
{ route: 'locationSelect', moduleId: 'viewmodels/locationSelect', nav: true },
{ route: 'history', moduleId: 'viewmodels/history', nav: true },
{ route: 'helpText', moduleId: 'viewmodels/helpText', nav: true },
{ route: 'scheduled', moduleId: 'viewmodels/scheduled', nav: true },
{ route: 'reportForm/:formId(/:templateId)', moduleId: 'viewmodels/reportForm', nav: true }
]).buildNavigationModel();
return router.activate();
}
ありがとう@gkb。私は最終的に 'if(router.activeInstruction()。fragment.match(/^reportForm。* $ /))'を使ってそれを把握しました。 activeInstructionは私が知らなかった何かだった –
@TomRudge - ええ、私はこのドキュメントを使っていたときに見つけられませんでした...ルータオブジェクトのデバッグには私のために似た問題がありました.. – gkb