問題タブ [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.
durandal - 相対モジュール ID を使用したデュランダル子ルーターのセットアップ
Durandal 子ルーティングを構成しようとしています。親ルーターが担当する魔女の公開セクションがあります。
次に、子ルーターがプライベート セクションを担当する必要があります。ユーザーがログインした後、子ルーターのルートをマッピングしています。ユーザーの種類 (管理者、ユーザー) に応じて、適切なルートで子ルーターをアクティブにしています。
ルーターが最初に初期化されたときはすべて正常に動作しますが、メイン ルーター (ログイン ビュー) に戻って別のログインが実行されると、子ルーターは相対モジュール ID を 2 回追加します。
最初のログイン後、ルートには正しいモジュール ID 「viewmodels/private/ route 」が含まれますが、2 回目のログインで子ルーターが初期化されると、ルートには moduleId「viewmodels/private/viewmodels/private/ route」が含まれます。
それがいつあるべきか:
何が原因なのか特定できませんでした。何か助けはありますか?
knockout.js - 同じモジュールに移動し、異なるデータを表示するとデュランダルが再バインドされる
私のアプリケーションには、異なるデータを表示するために使用されるビューモデル/ビューのペアがあります。表示されるデータは、何らかのユーザー入力によって生成され、データ セットごとに個別のルートがルーターに登録されます。
問題は、同じビュー/ビューモデルが異なるルートに使用されるため、それらの間を移動するときに、ビューとビューモデル間のバインディングが更新されないことです。
コールバックに接続すると、 viewModelcanReuseForRoute
が更新されましたが、ビューが更新されません。
バインディングで使用しようとしcacheVews
ましたrouter
が、ビューはまだ更新されませんでした。
同じビュー/ビューモデルを使用している別のルートに移動するときに、ルーター/ルーティング構成を更新するにはどうすればよいですか?
EDIT : (詳細)コールバックのフックbinding
モジュールが最初に使用されたときにのみ、Durandal がビューをバインドすることを発見しました。同じモジュール (ビュー/ビューモデル) で別のルートに移動しようとすると、binding
コールバックが再度呼び出されません。
durandal - durandaljs - ボタンのクリックでビューにナビゲート
durandal でナビゲートするポイントを逃したかもしれませんが、ボタンのクリックでビューをトリガーしたい場合、これはどのように行われますか?
ビューモデルのクリック機能にボタンをデータバインドしています。ただし、ビューモデルが読み込まれると、すぐにビュー リダイレクトがトリガーされます。
見る:
ビューモデル:
durandal - durandaljs router:navigation:composition-complete 起動が早すぎる
私の質問は次のとおりです。子モジュールが完全にロードされ、構成が完了したことを知る最善の方法は何ですか?そのモジュールの html コンテンツをテストできますか?
ルートの構成が完全に終了した後に実行されるいくつかの統合テストを作成しようとしています。
したがって、テストを構造化する方法は次のとおりです:
「navigate()」呼び出しの直前に、添付します:
router.on('router:navigation:composition-complete', callback)
次に呼び出します:
router.navigate('parent/child')
そして、テスト コードは「router:navigation:composition-complete」のコールバックにあります。
問題は、ルートが子ルートを呼び出していることです。つまり、子ルートをロードするモジュールを指す親ルートです。私のアプリケーションではルーティングは正常に機能しますが、テストで 'router:navigation:composition-complete' イベントをリッスンすると、子モジュールがロードされる前に、親モジュールがロードされた直後にイベントが発生します。
また、これは 2 番目のテストでのみ発生します。つまり、ルートに移動するテストが 1 つある場合、子モジュールが正しく読み込まれた後にイベントが発生します。次に、そのテストが実行された後、新しいテストで新しいルートに移動してテストできるようにすると、イベントは親モジュールがロードされた直後にのみ発生します。
SO、子モジュールの構成が完全に終了したことを適切に知るにはどうすればよいですか?
私が見ている問題をよりよく理解するために、ルートがどのように構成されているかの例を次に示します。
そして、parent/index.js には次のようなものがあります。
したがって、次のように呼び出すと、 router.navigate('parent/child') は、parent/viewmodels/child.js が読み込まれたときではなく、parent/index.js が読み込まれた直後に、composition-complete イベントを発生させます。
durandal - durandalの戻るボタンで前のビューをロードする方法
プロジェクトでビューを読み込もうとしています。ブラウザの戻るボタンをクリックした後、以前にアクセスした前のページをロードして、前のページに戻りたいです。durandal のサービスを使用してロードするメソッドを作成する必要がありますか?
javascript - データベース durandal からの子ルーターのロード
データベーススターターキットから durandal 2 で子ルートを作成しようとしましたが、成功しませんでした。
以下に示すように、静的コンテンツでレンダリングすることに成功しましたが:
ただし、データベースからメニューを動的に出力できませんでした。私は何か間違ったことをしていますか?以下の私のコードを見てください
Html はほとんど同じように見えます。助けてください
durandal-2.0 - durandal 2.0のnavigateBack()でページ全体がリフレッシュされる
Durandal 2.0.1 を使用して、router.navigateBack 関数を正しく動作させようとしています。
リードと呼ぶエンティティを作成できるビューモデルがあります。新しいリードを作成した後、uri を置き換えて、作成リード ルートの代わりに編集リード ルートを持ち、履歴でも置き換えたいと考えています。保存後に次の関数を呼び出します。
ここに私の設定ファイルのルートの説明があります
その後、私が電話するとき
予想されるルートに移動しますが、常にページ全体が更新されます。ページ全体の更新を避けて、いつものようにナビゲートしようとしています。
durandal 1.0では、私はただ電話していました
これと同じタスクを達成するには、うまくいくでしょう。ここで何かが足りないのではないかと思っています。
durandal-2.0 - デュランダル発動機能の不具合
durandal でのエラー処理に苦労しています。
ビューなどをレンダリングするためのロジックの大部分を activate 関数に配置することが望ましいことがわかりました。
いくつかのプログラミングエラーが原因でアプリ全体が非常に静かに落ちることに気付くまで、これはうまく機能していました. つまり、コンソールに何も書き込まれず、トラップされたエラーもなく、アプリはアクティブ化機能でハングアップします。
これは予想される動作ですか。アプリのアプリケーション ロジックを別の場所に移動する必要がありますか?
実際のコードは少しぎこちなく、多くの部分が jquery の promise などでラップされています。
私が見たものを証明するために、私は次のように書きました。
コンソールには何も書き込まれず、アプリケーションがハングする以外に明らかなエラーは発生しませんでした。
すぐに起こること:
この状況では、アクティブ化機能は進行しましたが、残念ながら、このエラーを追跡することもできませんでしたか?
アクティベート ポイントでアプリケーション ロジックを実行する方法を見つける必要があるのではないかと心配していますが、これらのエラーが単純に飲み込まれないようにすると便利です。
デュランダルについてもう少し調べて掘り下げました。
エラーはまだ消えます。エラーをログに記録しようとする Durandal による明白な試みにもかかわらず。私はactivator.jsのアクティブ化機能を探しています:
基本的に、catch 条件が実行され、システム エラーが呼び出されます。結果はノックアウトバインディングなどに消えているようです。とにかく、このエラーをより見やすくする方法はありますか? 今のところ、activator.js の activate 関数にブレークポイントを設定することに行き詰まっています。
durandal の v2.0.1 を使用しています。