問題タブ [durandal-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
266 参照

hottowel - mapUnknownRoutes を親にリダイレクトするにはどうすればよいですか

これは私が持っているものです(仕事から-> index.js)

どうすればそれを親にリダイレクトできcode404ますか?

私のフォルダは次のようになります。

エラー:

これは機能しますが、ページが壊れます

0 投票する
1 に答える
923 参照

javascript - 既存のページを更新するデュランダル手法 [view/viewmodel]

右上隅のドロップダウンに表示される特定のユーザーに関連するデータを表示するダッシュボード ページがあります。

別のユーザーを選択すると、そのユーザーに関連するデータでダッシュボードを再読み込み/更新する必要があります。

ページをリロードしない同じページに移動するため、ルーターが機能しません。別のトリックは、ダミーページを作成し、そこからダッシュボードにリダイレクトすることですが、よりクリーンなアプローチを探しています。

0 投票する
1 に答える
610 参照

durandal - durandal、ナビゲーション中にパラメーターをウィジェットに渡す

SPA にいくつかのシングルトン ビューがあり、これらの各ビューには同じウィジェットが含まれています。

ビューがアクティブ化されると、アクティブ化コールバックからいくつかのパラメーターを取得してウィジェットに渡すと、正常に動作します。

しかし、ビューに 2 回目に移動すると (アクティブ化コールバックに異なるパラメーターを使用して)、ウィジェットのアクティブ化メソッドが正しく発生しません。

新しいデータをウィジェットに渡すにはどうすればよいですか?

パラメーターを監視可能にしてウィジェット (settings.params.subscribe) にサブスクライブしようとしましたが、うまくいきましたが、良い解決策だとは思いません。

0 投票する
1 に答える
132 参照

javascript - DurandalJSページをレンダリングせずにリダイレクトする方法は?

ハッシュでいくつかのページに移動してから、いくつかのロジックを実行して、新しいページ/モジュールをレンダリングせずにリダイレクトして戻すことは可能ですか?

実際に私が欲しいのは、いくつかのロジックを実行して、スプラッシュ画面を表示せずに同じページを更新することです。

たとえば、単純な HTML リンクがあります。

language.js には、「アクティブ化」関数でデータを取得する単純なコードがあります。

しかし、私の問題は、viewUrl プロパティからの load.html が短期間表示されることです。その直後に前のページに戻ります。

loading.html ページがレンダリングされないようにしたい。どうやってするか?Durandal のドキュメントを調べて Google で検索していますが、役立つ情報が見つかりません。

.then(function () { return false; });

上記のコードは、アクティブ化関数から false を返し、ページのレンダリングを防止しようとしましたが、機能しません:(

編集

設定/読み込みがレンダリングされないようにして、ナビゲートしていた前のページを更新したい。

0 投票する
1 に答える
878 参照

durandal - Durandal ルーター - ルート定義でビューをモーダルとして定義する方法

クリック時に直接モーダルとして開くようにビューを宣言するにはどうすればよいですか?

私のルートの定義は次のとおりです。

「contactus」モジュールを現在の画面でモーダル ダイアログとして開きたい - 別のビューに移動したくない。

それを達成する方法がわかりません。提案に感謝します。

0 投票する
1 に答える
294 参照

single-page-application - Durandal 2 のアップグレード リダイレクトの問題

こんにちは。私の問題をご覧いただきありがとうございます。

私は、私の救世主であるJohn Papaの賢明なアドバイスに従って、SPA アプリケーションを Durandal 2.0 ライブラリを使用するように移行しています。アップグレード プロセスが完了したので、メニュー ボタンを使用してナビゲートしようとすると、奇妙な動作 (または動作の欠如) が見られます。具体的には、ブラウザが新しいページにリダイレクトされないことです。興味深いのは、ブラウザーのアドレス バーが適切に入力されていることです。アドレス バーをクリックして Enter キーを押すと (ハード リロード)、期待どおりにリダイレクトされます。

私は周りを見回しましたが、これは他の場所で議論されているセキュリティチェック/リダイレクトが原因ではありません. デュランダルコードは無修正です。

ページ上の js は非常に簡単です。

だから私の推測では、デュランダルの私の構成の何かです。

main.js:

shell.js:

config.js のルート

0 投票する
1 に答える
124 参照

javascript - DurandalJS - ページ ルートでの完全なアクティベーション サイクルの強制 (別名: app.setRoot() で「deactivate」を実行)

[編集] ここにも Google グループのスレッドがあります。詳細がわかり次第、両方を最新の状態に保つようにします。

Durandal Documentationによると、ページ Root View Model は限定された Activator 機能のみを実装しています。具体的には、次のように述べています。

....

4) app.setRoot を呼び出すと、(限定的な) アクティベーターがルート モジュールで使用されます。

注: ケース 4 は、canActivate および activate コールバックのみを強制するため、少し異なります。非アクティブ化のライフサイクルではありません。これを有効にするには、自分で完全なアクティベーターを使用する必要があります (ケース 1 ~ 3)。

つまり、ネストされたページのすべての ViewModel とは異なり、ルート ビューモデルにはジャンク オブジェクトを破棄してクリーンアップする機会がありません。

app.setRoot() を呼び出したときに、これらのオブジェクトで canDeactivate と activate の両方を起動するフレンドリーな方法は何ですか? おそらく手動でこれを行うこともできますが、必ずしもスコープ内にあるとは限らないルート ViewModel への参照が必要です。

私は一種の pub/sub システムを作成することを検討しましたが、それにはうんざりしています。それは、メモリの問題を減らしたり、クリーンアップの複雑さを軽減したりする可能性があるからです。

プロジェクトをフォークすることを検討しましたが、それ以降はフォークを維持する必要があるため、オーバーヘッドが大きくなります。

[編集]

例:

アプリケーションを起動し、シェルを「メイン」シェルに設定するとします。

しばらくして、新しいシェルに切り替えたいと思います。おそらく、別のレイアウト、全画面表示、または別のスキンです。

これにより、シェルの「アカウント」がアクティブ化および canActivate をチェックおよび/または起動しますが、シェルの「メイン」で canDeactivate および非アクティブ化をチェックしません。これらがなくなったときに実行したいクリーンアップ ロジックがあります。どうすればこれを達成できますか?

[編集]

デュランダル コードの一部は、モジュール 'durandal/app' の下にあるローカル関数です setRoot() finishComposition() このようになります

おそらく、これをモンキーパッチする方法はありますか?できればデュランダルのコア部分の編集は避けたいです。

0 投票する
1 に答える
286 参照

durandal - ユーザーが戻ることができるかどうかを検出することは可能ですか?

基本的に、アプリのブラウザの戻るボタンを複製する必要があります(私はそれを望んでいませんが、それを行う必要があります:/)

durandal では、 を呼び出すことで戻ることができますrouter.navigateBack();。ただし、常にページが戻るとは限りません (ない場合、ブラウザーの [戻る] ボタンは無効になります)。では、前のページがあるかどうかを検出することは可能ですか?

ユーザーがナビゲートすると増加し、「戻る」ボタンをクリックすると減少する単純なカウンターを作成することを考えていますが、ユーザーがブラウザーの戻るボタンをクリックしたことをどのように検出できるかわかりません。前のページがないことを知る方法があればいいのですが。

0 投票する
0 に答える
129 参照

durandal - デュランダルルートを相対化する方法

ユーザーのクリックに基づいて動的ルートを構築しています。ユーザーがボタンをクリックすると、ナビゲーションモーダルが再構築され、ユーザーをナビゲートするルートが決定されます。ビュー モデルでナビゲートを使用する場合、デュランダル ルートを相対的にするにはどうすればよいですか。router.navigationmodel を使用すると、すべてのルートが現在のルートに対して相対的に構成され、正常に動作しています。しかし、ビューモデルでナビゲートを使用しようとすると、アドレスバーの現在のルートが削除され、移動先のルートの文字列に置き換えられます。例: ナビゲーションモデル ルートを使用 -> 'car' ルート表示 -> 'index#car' -> これで問題ありません

しかし、ビューモデルでは、navigate('car') で car を呼び出すと、ルートは -> '/car'; になります。

誰かが解決策を手伝ってくれれば幸いです。