問題タブ [marionette]
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.
backbone.js - モデルで定義された名前なしでハンドルバーテンプレートの配列を反復処理する方法
私はモデルを持っています:
ハンドルバーで反復するためのコード:
xxxを定義するにはどうすればよいですか?
JSONのモデルに次のような名前が付いている場合:
私は次のようなハンドルバーで単純に繰り返します:
javascript - Marionette.CompositeView の templateHelpers
このコードが機能しない理由がわかりません。ドキュメントを
読んで
、を呼び出す必要があります。 templateHelpers
私の目標は、this.collection.length
をテンプレートに渡すことです。
ヒントはありますか?ありがとう。
Backbone.Marionette v0.9.5 を使用しています
私の問題を解決するには、次のことを行う必要があります...
それを機能させるためのより良い方法はありますか?
javascript - Backbone.Marionette にはメソッド「bindTo」がありません
マリオネット初挑戦。ここの例に従ってください:
次のエラーが表示されます。
また、例からコード スニペット全体をコピーして貼り付けようとしましたが、これもそのエラーをスローします。それで、私は何が欠けていますか?
backbone.js - 表示されているビューと同じモデルを共有する非表示のバックボーン ビューを管理する
Backbone を数か月使用してきましたが、表示されているビューとモデルを共有している場合、非表示のビューを処理するためのより良い方法が必要であると考えています。たとえば、「セグメントの表示」ビューと「セグメントの編集」ビューはどちらも「セグメント」モデルを表しています。これらの 1 つは常に非表示になっていますが、他のイベントと同じイベント (ajax 呼び出しを含む) をリッスンしています。ビューを置き換えるのではなく単に非表示にする理由は、ビューが大量のデータと DOM 要素を表示するため、ビューを変更する間のロード時間を最小限に抑えたいからです。非表示のビューは、表示されるまでレンダリングする必要はないと考えています。
このシナリオを処理する適切な (ベスト プラクティス) 方法はありますか? この問題をどのように処理しますか? ビュー全体のイベント リスニングを一時的に無効にする簡単な方法はありますか?
javascript - コレクションの制限-.firstはCompositeViewsでは機能しません
コレクションの最初の100エントリ、または101〜200のエントリを表示したいと思います。
マリオネットCompositeViewを作成し、
エラーが発生します。合格のみがmyCollection
機能します。これの正しい構文は何ですか?
backbone.js - バックボーンマリオニエットイベント.EventAggregatorとtesing
テストでタイミングの問題が発生しています。イベントアグリゲーターを使用してイベントを発生させていますが、問題は、発生したイベントにコードが到達する前に仕様が完了していることです。イベントコードが実行された後に実行するスペックが必要です。
たとえば、レイアウトを作成してからイベントを発生させています。
次に、レイアウトが作成された後、別のビューを作成します。
問題は、このコードが実行される前にスペックが終了することです。
私のオプションは、テストからイベントをトリガーするか、「layout:rendered」イベントハンドラーからコードを「セットアップ」してテストから呼び出すメソッドにリファクタリングすることです。
誰かがもっと良いアイデアを持っているかどうか私は興味がありますか?
backbone.js - Backbone.Marionette で bindTo、bind、または on を使用するのはいつですか?
今回は、イベントをバインドするさまざまな方法に苦労しています。私は自分のコードで言及されたすべてのメソッドを持っています。私が正しい道を進んでいるかどうかはわかりません。変更後にビューが完全に閉じられていることを確認するために、常に bindTo を使用する必要があります (現時点では、これによりエラーが発生することがよくあります)。正しい方向に進むのに役立つベスト プラクティスはありますか?
マリオネットについての私の現在の理解を説明するために、ここに私のアプリの 1 つのモジュールを示します。いつものように、すべてのヒントは大歓迎です。
backbone.js - アプリケーションの起動と Backbone.Marionette モジュールに関する問題
残念ながら、Backbone.Marionette モジュールとサブモジュールの起動を理解する際に問題が発生しました。イニシャライザは、1 回ずつ呼び出されるのではなく、複数回呼び出されます。
物事を予見可能な方法で機能させるために何をする必要がありますか?
(コードはJSFiddleとしても利用可能)
上記のコードは、コンソールに次の行を出力します。
- 申請開始
- ルーティング.init
- ProductsRouting.init
- ルーティング.init
- ProductsRouting.init
- Products.init
- Products.init
そして、これは私が期待したものです:
- 申請開始
- ルーティング.init
- Products.init
また、アプリですべてのモジュールを自動的に開始することにした場合 (すべてのモジュールで startWithApp: true を使用し、Routing モジュールと Products モジュールを手動で開始する必要はありません)、出力は次のようになります。
- ルーティング.init
- ProductsRouting.init
- ProductsRouting.init
- Products.init
- 申請開始
backbone.js - モデルのjavascript配列プロパティに基づいてバックボーンマリオネットコレクションビューを正しく表示するにはどうすればよいですか?
*更新: 以下の最後のコード ブロックの最終回答コードを参照してください。*
現在、コレクション ビューでコレクションを表示する際に問題が発生しています。コレクションは、そのような既存のモデルのプロパティです(疑似コード)
したがって、基本的に ApplicationVersion には、javascript 配列である ApplicationCategories というプロパティがあります。現在、ApplicationCategories に関連付けられたコレクション ビューをレンダリングすると、何もレンダリングされません。Chrome の JavaScript デバッガーでデバッグすると、カテゴリがまだ入力されていないように見えます (そのため、ApplicationVersion はまだフェッチされていないと想定しています)。これが現在の私のコードです
ApplicationCategory モデル、コレクション、およびビュー
ApplicationCategory テンプレート
ApplicationVersion モデル、コレクション、およびビュー
ここに私の ApplicationVersion テンプレートがあります
注意すべきことの1つは、現在Sinonを使用してサーバーの応答をモックしていますが、javascriptデバッガーを調べていると予想される情報で応答しているため、これが問題を引き起こしているとは思いません(ApplicationVersionが表示されていると言ったように) ID は正しく)。役立つ場合は、このコードも提供できます
現在、アプリケーションのバージョン ID (テンプレートの ID) が表示されているため、通常のプロパティのデータを正しく取得していることがわかります。ApplicationCategories JavaScript 配列プロパティをレンダリングしていません。
したがって、最終的には、ApplicationVersion のフェッチの成功にバインドしてから、ApplicationCategories のビューを設定します。これは期待どおりに機能しないため、このコレクション ビューを作成するためのより良い方法があるかどうか疑問に思っています。
助けてくれてありがとう
更新: Derek Bailey が私を導いてくれた実用的なコード例も。
javascript - バックボーンでのスマートポーリング
Marionette.CompositeView(2)を更新し続けるために、次の(1)のような長いポーリングモジュールを実装しました。
このポーリングをよりスマートにしたいと思います。
詳細には、このポーリングでコレクションをフェッチするのではなく、新しい要素のみをチェックして、すべてのビューが再度レンダリングされないようにする必要があります。
何か案は?
(1)
(2)