問題タブ [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 - Backbone.Marionette モデル.destroy の問題
私は非常にシンプルなバックボーン モデルとコレクションを持っています。対応する backbone.marionette.CollectionView と backbone.marionette.ItemView があり、backbone.marionette.region に住んでいます。
ItemView テンプレートには、「削除」ボタンが含まれています。削除ボタンのクリック イベントは、model.destroy() を発行します。HTTP DELETE がバックエンドに発行されますが、2 回発行されたように見えます。2 回目は失敗したため、アイテムはコレクションから削除されません。
他のすべては正常に機能しており、HTTP DELETE が 2 回発行されているだけです。理由はありますか?
Backbone.Marionette バージョン v0.4.5 を使用しています
backbone.js - バックボーン Marionette で親子関係のルーターを正しく構成する
ユーザーが編集を追加し、親子を組み合わせて表示できるページを作成しようとしています。
UI には 3 つの列があります Parent : 親のリスト Children : Child
ユーザーが元の場所に戻ることができるようにコントローラーを構成したいのですが、親と子の両方を編集できるようにする必要はありません。
// バックボーン マリオネットを使用して近づいていますが、まだいくつかの小さな問題があります
「this.ViewClient」を持つことはハックに感じられ、機能しません。
backbone.js - Backbone はコレクションを逆順にレンダリングできますか?
Signalr ハブを使用して、サーバー上のイベントをサブスクライブしています。どのようなイベントがハブにディスパッチされ、アイテムが Marionette CollectionView に正常に追加されますか。これは、テーブルにレンダリングされます。
Because the table of events is essentially a blotter, I'd like the events in reverse order and preferably only keep n-number of events.
Can Backbone 'automatically' re-render a collection in reverse order?
templates - backbone.marionette で EJS テンプレートを使用するには?
これまで、Rails/Backbone.js アプリケーションで EJS テンプレートを使用してきました。本当にbackbone.marionetteを使い始めたいです。EJS で動作させるにはどうすればよいですか?
ドキュメントには、属性にjQueryセレクターを提供する必要があると書かれてtemplate
いますが、私のEJSテンプレートにはjQueryセレクターがあるとは思いません。
アップデート:
これは、テンプレートを使用してビューを正常にレンダリングする方法です。
item.jst.ejs
そして、次のようなファイルを含むテンプレートフォルダーがあります。
私のテンプレートフォルダーは次の場所に含まれていますapplication.js
backbone.js - div でスクロール イベントをキャプチャする
Backbone.Marionette.CompositeView 内でスクロール イベントをキャプチャしようとしていますが、成功しません。
演習として、Backbone.Marionette を使用してhttp://www.atinux.fr/backbone-books/を書き直しています。ご覧のとおり、下にスクロールすると、より多くの本が取得されて表示されます (つまり、無限スクロール)。ただし、ビューでスクロール イベントをキャプチャできません。
これが私の(簡略化された)コードです:
完全なソース コードは、 https ://github.com/davidsulc/backbone.marionette-atinux-books/blob/scroll/assets/javascript/app.js#L86-89 で確認できます。
私が理解していないのは、「クリック」イベントが適切にトリガーされていることですが、「スクロール」イベントはそうではありません。私は何を間違っていますか?
編集:エラーは最終的には非常に単純でした...ビューのコンストラクターに「el: #content」を渡していましたが、スクロールは「.library」の CSS で定義されていました。したがって、DOMを次のように変更したら
に
すべてが正常に機能しました...
javascript - コレクション全体を再レンダリングせずに、コレクションの開始時に新しいレコードを表示しようとするバックボーン (マリオネットも)
コレクションの開始時にアイテムをレンダリングしようとしています (Facebook に新しいレコードを投稿している場合を想像してください)
add(response, {at: 0}); に来たら コレクションに挿入すると、レコードはコレクションの 0 に正しく挿入されますが、アイテムのリストの一番下にレンダリングされます。以前はこれが機能していたので混乱していますが、ハッキーなスタイルで行っていたのは、コレクションをリセットして再レンダリングしただけだと思います。
これを処理するためのきちんとした方法と、ロジックをどこにバインドする必要があるのか 疑問に思っています。
コレクションの add メソッド上ですか?現在、これは空です (ただし、Marionette を使用しています)。これにより、バックボーンのデフォルトのレンダリングが上書きされるように感じます。すべてを破棄して再作成することなく、新しいアイテムをリストに正しく追加できるように、再びそれを制御するにはどうすればよいですか。
javascript - メニューを実装するために使用するコンポーネントはどれですか?
次のようなメニューを表示したい:
ご覧のとおり、My lightsabers
メニューはアイテムのリストですが、新しいライトセーバーを追加するためのリンクは独立しています。
ライトセーバーリストをレンダリングするにはを使用する必要があると思いCollectionView
ますが、「追加」リンクをレンダリングするにはどうすればよいですか?
そのようなメニューの例はありますか?
質問は一般化することができます:マリオネットによってレンダリングされたHTMLのビットを、それが行うことを壊すことなくカスタマイズする方法は?
javascript - Backbone.Marionette および Backbone.ioSync で Backbone.Relational を使用したフェッチ後の fetchRelated
Backbone.Marionette および Backbone.ioSync で Backbone.Relational を使用して、socket.io 経由で同期しています。
より具体的には、関係を介してモードのインスタンスを作成するモデルA
があります。読み込み時には、データが適切に初期化され、レンダリングされます。次に、別のクライアントが の別のインスタンスをに追加します。サーバーは ping を最初のクライアントに送信します。これにより、. フェッチの成功メソッドでは、 を呼び出します。fetch メソッドはリレーションの ID のリストのみを返し、 onをトリガーし、Backbone.Marionatte のコレクション ビューがアイテム ビューの新しいインスタンスを作成して、新しい を表示します。これにより、新しいがまだフェッチされていないため、サイトが壊れます。 .hasMany
B
bees
B
A.bees
A.fetch()
A.fetchRelated('bees')
bees
change
A
B
B
B のビューのレンダリングを、A で定義された遅延オブジェクトに強制的に同期させようとすると、多くのエッジ ケースを処理しなければならない複雑なハックのように思えます。
1 つのアイデアは、オプションfetch
を受け入れることを許可することです。しかし、 の関数でおよびイベントsilent
をトリガーするのは、おそらくトリッキーです。change
add
success
fetch
もう 1 つのアイデアは、サーバーコンテキストのシリアル化コードを認識させ、新しいアイテムが追加されたときに ID だけでなくオブジェクト全体を送信することです。これは、別の A に追加されたときに、同一の B 全体が不必要に転送される可能性があるため、最適ではありません。また、シリアライゼーション プロセス全体にコンテキストを伝達する必要があるため、サーバー コードがさらに複雑になります。
これにアプローチする方法についての考えや提案はありますか? Backbone.Marionette または Backbone.Relational が機能する限り、変更が必要になる可能性のあるソリューションを受け入れます。
javascript - Backbone.MarionettevsBackbone-ボイラープレート
私はBackboneを初めて使用し、開発へのアプローチ方法を決定しようとしています。
現時点では、バックボーンボイラープレートよりもbackbone.marionetteを使用するのはいつかと思います。
私が言えることから、マリオネットははるかに規範的ですが、これはほとんどの人がここで開発に取り組む方法ですか?