問題タブ [backbone-routing]

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 に答える
1388 参照

backbone.js - バックボーンとrequirejsを使用して複数のルーティングを定義/使用する方法

アプリをいくつかのアプリに分割しました。

1) でルーターを使用しようとすると、機能しますapp1
2) でルーターを使用しようとすると、機能しapp2ません。3)作業中のルーター
の行にコメントすると。'js/app1/routing',main.jsapp2

なぜこのような動作をするのですか?
github で複数のルーティングと requirejs を使用するアプリの例はありますか?

ありがとう。

これが私のコードです:


** main.js **


** app.js **


** app1/ルーティング **


** app2/routing.js **

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

javascript - Web アプリケーション モジュールの単体テスト

Backbone.Marionetteを使用して、サブアプリ モジュールのジャスミン単体テストを作成しています。

何をテストすればよいか、誰かが私にアイデアを与えることができますか?

テストするモジュールは次のようになります。


私はこのようなものを作りますが、これが適切な方法であるかどうかはわかりません:


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

javascript - Backbone.jsルーティング-URLにキー/値を追加します

#view / listと#view / tableのルートでさまざまなビューにタブを使用する場合がありますが、さまざまなビュー間で機能するフィルターもあり、それらのルートは#filter / all、#filter / key、等

私のタブにはこれらのリンクがあるので:

そして私のフィルターは:

ルートを組み合わせる最良の方法は何ですか。ビューを開いてフィルターを選択すると、URLは..#view / list / filter/keyになります。

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

backbone.js - MAMPで実行されているバックボーンボイラープレート、ルーターを動作させることができない

現在、バックボーンボイラープレートを使用しており、MAMPサーバーのローカルホストで実行しています。ルーターが機能しないようです

インデックス関数をヒットし続けます。

これを自分のURL「http:// localhost:8888 / OutfitApp /#photo *」と「http:// localhost:8888 / OutfitApp/photo」に入れました

どちらも機能しません。

私は削除しました

私のコンソールには何も出てきません。

私は何が欠けているのか混乱していますか?

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

backbone.js - Backbone.jsルーター初期化機能

私はbackbone.jsにかなり慣れていませんが、まだすべてがどのように機能するかを学んでいます。バックボーンルーターのオプションがどのように機能するかを理解しようとしていinitializeますが、適切なドキュメントや例を見つけることができなかったので、ここの誰かがそれを理解するのを手伝ってくれることを望んでいました。私は実際にそれについていくつか質問があります...

  1. 複数のルートを持つルーターを定義した場合initialize、それらのルートの1つが呼び出しで呼び出されるたびに関数が呼び出されますrouter.navigateか?
  2. 初期化が行われるまでルートハンドラの実行を遅らせる最も適切な方法は何でしょうか?

ありがとう。

0 投票する
2 に答える
2273 参照

jquery - バックボーン ルータが trigger=false オプションを尊重しない

Backbone.js は、navigate(fragment, [options])その Backbone.router オブジェクトのメソッドを提供します。これは、次のことを行います (ドキュメントに従って)。

アプリケーションで URL として保存したいポイントに到達したら、URLnavigateを更新するために を呼び出します。route 関数も呼び出したい場合は、triggerオプションをに設定しますtrue。ブラウザの履歴にエントリを作成せずに URL を更新するには、replaceオプションをに設定しますtrue

したがって、単純に呼び出すと、対応するルートをトリガーせずappRouter.navigate('page');に URL が変更される可能性があります。ただし、デフォルトwww.myapp.com/pageではルーターが URL にリダイレクトされ、ページ ルートもトリガーされることがわかりました。trigger=false

したがって、次のコード:

www.myapp.com に移動すると、次のコンソール出力が生成されます。

予想されるコンソール出力が次のようになる場合:

この方法は、デフォルトのtriggerオプションに従わないようです。これは実装のバグですか、それとも何か誤解していますか?

0 投票する
2 に答える
3533 参照

javascript - Backbone.jsでルーティングを防ぐには?

最初のページから [キャンセル] をクリックすると、問題ありません。しかし、「2 ページ目」に移動するときに「キャンセル」が機能しません。この場合、ルーターはアプリケーションを "" ルートにリダイレクトします。このリダイレクトを防ぐ必要があります。

「キャンセル」 - リンクを非表示、「2 ページ目」 - 2 ページ目に移動

ビューを作成し、コンテナーの html を置き換えます

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

backbone.js - ルート ハンドラへの後続の呼び出しでバックボーン ビューが正しくレンダリングされない

ルート ハンドラー (ブラウザー アプリケーション) から backbone.js ビューを正常にレンダリングする際に問題が発生しています。

私のjavascriptモジュールは現在次のように設定されています:

アプリを実行すると、すべてが正常に実行されます...期待どおりにホームビューに移動します。ハンドラーとのリンクを設定して、さまざまなルートに適切にナビゲートし、実行するapp.navigate('pre-sort', { trigger: true, replace: true})と問題なく実行され、リスト内の期待されるアイテムが期待どおりにレンダリングされます。

問題は、ホーム ビューに戻ろうとしてから、並べ替え前のビューに戻ろうとしたときに発生します... リスト内の項目が期待どおりに画面に表示されません。子ビューが追加されていない空のpre-sort-actions-templateレンダリングを取得しています。コードをステップ実行したところ、コレクションにデータが入力され、項目がそこにあることがわかります...しかし、何らかの理由で、私のコードはそれらをビューに適切にレンダリングしておらず、理解できないようですなぜ、または私が間違っているのか。何か案は??私はバックボーンにかなり慣れていないので、このコードが完全に正しく書かれていないと確信しています...建設的なフィードバックを歓迎します. ありがとう。

0 投票する
2 に答える
2267 参照

backbone.js - Backbone.js 読み取り専用コレクション ビューのレンダリング

私の問題の簡単な要約: ビューの最初のレンダリングにはコレクション内の要素が含まれていますが、2 番目のレンダリングには含まれていません。詳しくは続きを読む...

また、注意: 次のコードはハッピー パスを表しており、潜在的なエラー処理コードが欠落している可能性がたくさんあることを認識しています。これは簡潔にするために意図的に行われています。

私は backbone.js にかなり慣れていないため、次のシナリオのソリューションを実装する正しい方法を見つけるのに苦労しています。

アプリケーションのメイン レイアウトとなるレンダリングされたコンテンツを格納/表示するために、2 つのメイン リージョンでシェル化されたページがあります。一般に、次のようになります。

私は、データを取得している HTTP API を持っています。これは、実際には、さまざまなモジュールのリソース情報を、OPTIONS各モジュールのベース URL への呼び出しからの JSON 結果の形式で提供します。たとえば、次のようなOPTIONSリクエストをhttp://my/api/donor-corps返します。

アプリケーションには、私が呼び出しているバックボーン コレクションがあります。これは、複数の異なるバックボーン ビューによってレンダリングされ、アプリケーションの異なるページに異なる方法で表示される可能性のあるオブジェクトDonorCorpsCollectionの読み取り専用コレクションになります (最終的には...後で.. DonorCorpModel.現時点ではそうではありません)。のurlプロパティは、API モジュール リソースを取得するための最初の呼び出しの結果の「GetDonorCorps」プロパティを持つオブジェクトDonorCorpsCollectionのプロパティである必要があります (上記を参照)。UrlNameOPTIONS

アプリケーションには上部にメニューバーがあり、クリックするとアプリのさまざまなページが表示されるリンクがあります。今のところ、アプリには「ホーム」ページと「プレソート」ページの 2 つのページしかありません。「ホーム」ビューでは、両方のパネルにプレースホルダー情報が含まれているだけで、ユーザーがメニュー バーのリンクをクリックして実行するアクションを選択する必要があることを示しています。DonorCorpsCollectionユーザーが「並べ替え前」ページのリンクをクリックすると、アクション パネルに順序付けされていないリストとしてレンダリングするバックボーン ビューを表示したいだけです。

私は現在、アプリケーション コードを整理してカプセル化するためにJavaScript モジュール パターンを使用しています。現在、私のモジュールは次のようになっています。

最後に、これはすべて次の HTML を使用しています。

これまでのところ、 「事前並べ替え」メニュー リンクを初めてクリックしたときに、これを機能させることができました。クリックすると、Donor Corps のリストが期待どおりに表示されます。しかし、[ホーム] リンクをクリックしてから、[事前並べ替え] リンクをクリックすると、今度はヘッダーが<ul class="donor-corp-bins"></ul>表示されますが、リスト項目がなく空です。...そして、なぜ、または何を別の方法で行う必要があるのか​​ わかりません。backbone.js の Views と Routers は一般的に理解しているように感じますが、実際には何かが足りないようです。

一般的に、これはかなり単純なシナリオのように思えます。ここで何か例外的なことをしようとしているような気がしませんが、正しく動作させることができず、その理由を理解できないようです. アシスト、または少なくとも正しい方向へのナッジは、非常に高く評価されます。

0 投票する
2 に答える
1078 参照

backbone.js - バックボーンルーター、URL、テスト/本番Webコンテキスト

バックボーンアプリケーションには、投稿のプレビューを表示するメインビューがあります。ユーザーが投稿をクリックすると、投稿がオーバーレイで展開され、その投稿を反映するようにURLが変更されます。投稿が展開されている間、ユーザーはルートコンテキストで発生する必要があるサーバーへの呼び出しをトリガーする何かを行う可能性があります。問題は、投稿が展開されると、ルートコンテキストで発生する必要のあるサーバー呼び出しが、代わりに投稿コンテキストから発生することです。操作の順序は次のとおりです。

  1. ページにはメインビューのURLが読み込まれます:http:// localhost:8080 / my-web-app /
  2. ユーザーが投稿をクリックすると、オーバーレイが表示され、URLが次のように更新されます:http:// localhost:8080 / my-web-app / posts / 1
  3. ユーザーがサーバーへの呼び出しをトリガーするものをクリックします。URLは次のとおりです:http:// localhost:8080 / my-web-app / posts / 1 / load、これは間違っています。

上記の例では、ロード操作はルートコンテキストから発生する必要があります:http:// localhost:8080 / my-web-app / load

モデルやコレクションなどのurlプロパティを変更して先頭の/を含めようとしましたが、これにより「/ my-web-app /」コンテキストが削除されます(urlはhttp:// localhost:8080 / loadになります) 、これは私のテスト環境で必要です。もちろん、これは実稼働環境では問題なく機能します。

これを回避するために、Backbone.historyルートオプションを「/ my-web-app /」に設定し、すべてのurlプロパティを次のようにオーバーライドしました。

このアプローチは機能しますが、このようなすべてのURL関数をオーバーライドするのはお尻の痛みです...言うまでもなく、それはハッキーな感じがします。また、実稼働環境ではまったく不要なコードです。テスト環境と本番環境の両方で機能するように、これを管理するためのより洗練された方法はありますか?

ありがとう!