問題タブ [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.
javascript - CoffeeScript / Backbone/Marionette-チュートリアルの変換例とスコープの問題
この例の基本バージョンをCoffeeScriptで作成しようとしています:http://davidsulc.com/blog/2012/04/15/a-simple-backbone-marionette-tutorial/。すべての依存関係は、私が(本文に)書き込んだ順序で.coffeeファイルとして宣言され、jQuery+アンダースコア+バックボーン+マリオネットが先頭にあります。
私はモデル、thing.coffeeを持っています
私の最初の問題はスコーピングです。宣言しないwindow.Thing
と、次のファイル(のコレクションThings
、モデルが見つからないThing
など。そこで何が間違っているのでしょうか。
私はコレクション、things.coffeeを持っています
マリオネットビュー、thing_view.coffeeがあります
マリオネットビュー、things_view.coffeeがあります
私はアプリケーションmyapp.coffeeを持っています
私のhtmlファイルは次のようになります:
次のconsole.log
:
だから、言うまでもなく、私は何が起こっているのか混乱しています-ここにはたくさんの間違いがあると確信していますので、助けてください!
marionette - onRender の要素に対する操作が機能しない
onRender
メソッド (またはitem:rendered
コールバック) でいくつかの HTML 要素を操作しようとすると、失敗します。
例:
フィールドにフォーカスを当てるなど、他のアクションと同じです。
どのように対処しますか?のトリックはsetTimeout
機能しますが、あまりエレガントではありません。
backbone.js - オブジェクトのサブセットの処理
オブジェクトのサブセットを処理するための適切なパターンは何ですか。
ロッカーのリストがあるとします。各ロッカー内にはアイテムのセットがあります。UI はこれに似たものです。アスキー アートが浸透することを願っています。
ロッカー #2 が選択されています (アクティブ)。私が行ってきたことは、ロッカー #2 がアクティブ化されたときにコールバックを設定し、次に ItemCollection.fetch({ data: { lid: LOCKER_ID }}) を実行して、表示の準備ができているアイテムのサブセットをフェッチすることです。これはバックボーンのようには感じません。
より良いアプローチは何ですか -
- モデルのサブセットをロードする - もしそうなら、それを行う方法の良い例はありますか?
- すべてをロードしてから、コレクションでバックボーン フィルタリングを実行しますか?
- おそらく適切なページネーションの例ですか?
javascript - 表示されないビュー、リージョンとレイアウト
レイアウトとリージョンなどをいつ使用するかについて wiki と例を読んだ後でも、私はまだ少し混乱していますが、私の問題は、ページに何も表示されないことです。何もレンダリングされません。html には実際にはメニューとコンテンツのみが含まれている必要があり、コンテンツはビューに基づいて変更できます。(メニューも同じようにしたので、それも入れ替えることができます)。
私はhtmlファイルを持っています:
この例では、js をapp.coffeeという 1 つのファイルにまとめました。
console.log には次のように表示されます。
ドキュメント/例を何百万回も読みましたが、これらすべての学習曲線は複雑です。助けてください!
javascript - バックボーンモデルをMarionetteItemViewにバインドする-.fetch()をブロックしますか?
これは2部構成の質問です。1)モデルをビューに非同期でレンダリングするためのより良い方法はありますか?私は現在fetch
、モデルのメソッドを使用してajaxリクエストを作成しています(ただし、初期化時に明示的に呼び出しています)。次に、メソッドが呼び出されたvent
後にモデル内から公開されるアプリケーションイベントを使用してテンプレートビューをレンダリングします。parse
かっこいいけど不安定?2)ブロッキングfetch
方法は役に立ちますか?それは可能ですか?
アプリケーションはこれをページにレンダリングします。
次に、モデルをフェッチして、これをレンダリングします。
ただし、トリガーを使用しない場合はvent
、(予想どおり)次のようにレンダリングされます。
htmlテンプレート:
app.js:
javascript - .fetch()のオーバーライドは、偽のデータ、urlRootのエラー、実際のModelajaxリクエストで機能します
私は混乱しています-モデルバインディングが正しく機能していると思いましたが、それは偽のajaxリクエストを伴うjsFiddleとしてのみでした。モデルをビューにバインドしました.fetch()
。応答をオーバーライドして偽造すると、すべてが機能します(モデルを更新し、ページでビューを更新できます)。ただし、パラメータを上書きして使用せずに応答を待つと、エラーが発生します。.fetch()
urlRoot
.fetch()
これは、変更されたものではなく、偽の応答で呼び出した後にモデルがレンダリングされる、動作中のjsFiddleです。
http://jsfiddle.net/franklovecchio/FkNwG/182/
したがって、サーバー側でAPI呼び出しがある場合:
/thing/:id
の応答例/thing/1
:
そして私はコメントアウトし.fetch()
ます、私はコンソールエラーを受け取ります:
.fetch()
コメントアウトされたコード:
backbone.js - 同じオブジェクトを表すがcidが異なる2つのモデルを同期する方法は?
私のアプリでは、ユーザーは車両を作成できます。「特定の車両を表示する」ページに、Vehicle のインスタンスがあります (これは RelationalModel をBackbone Relationalから拡張します)。ビークルのアバターを変更すると、このモデルが変更されます。
アプリケーションの別のページ「車両リストを表示」に、ユーザーの車両を表示するギャラリーがあります。モデル (Vehicle のインスタンスも) はコレクションにあります。残念ながら、それらは異なる CID を持っているため、ユーザーがショー ページで車両のアバターを変更しても、適切に更新されません。
それに対処する方法は?車両番号 9 はどこでも同じにしてほしいです。
backbone.js - フェッチを介してイベントを更新した後、バックボーンイベントが発生しない
私はbackbone.marionetteを使用しており、次のCollectionViewItemViewの組み合わせがあります。
ページに埋め込まれているjsonの初期コレクションからビューを作成します。イベントハッシュ内のイベントは完全に機能します。
次に、ドロップダウン変更イベントで、コレクションに対してfetch()を呼び出して、オブジェクトの新しいコレクションを取得します。DOMは再構築されますが、イベントハンドラーは再接続されません/
なぜこれが起こるのか誰かが考えていますか?
javascript - Backbone.Marionetteを使用してアイテムをリストに作成するためのアプリケーションを構築するにはどうすればよいですか?
これは、マリオネットの使用をまだ混乱させていることの1つです。
コメントのリストを表示し、新しいコメントを作成するためのシンプルなインターフェイスを想像してみてください。私が現在これを構築している方法は、CommentApp
私が以下に含めたようなものです。
私の質問には2つの部分があると思います。
これは、このタイプのアプリケーションを構築する方法ですか?可能な場合はBBCloneMailサンプルアプリをフォローしようとしましたが、コレクションに新しいアイテムを作成する例が提供されていないようです。
なぜ私がそれを呼んでみたところにlayout.listRegion
以下が戻ってくるのですか?より一般的には、ネストされたレイアウトでイベントのトリガーとバインドを処理する決定的な方法があります。かなり混乱しているようです。undefined
.show()
'layout:rendered'
'comment_layout'
テンプレートは単なる基本的なコンテナテンプレートです。
そして、私はJST
それをレンダリングするために使用しています。このコードでレンダリング関数をオーバーライドしました: