問題タブ [backbone-views]
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 - バックボーン:シングルトンビュー?
私はいくつかの異なるビューを取得しましたが、それらは主に(レイアウト-コンポーネント、レイアウト、メインビュー)のように構築されています。
異なるビューを切り替えると、ページ全体を再レンダリングする必要があります。
少なくとも「ウィンドウ」にレイアウトビューをキャッシュしてリロードしたほうがいいのではないでしょうか。
バックボーンビューのシングルトンパターンのようなものですか?
どうすればよいですか?単純です:
足りる?
他に考えなければならないことはありますか?
ruby-on-rails - ビュー内のbackbone.js各コレクション
ビューでコレクションをループすると、空のように見え、アラートダイアログが表示されません。このビューでconsole.log(this.collection)を使用すると、問題ないように見えます(このコレクションの16要素)。
私のルーター:(コレクションのURL:'/ api / employees'、これはrails jsonの出力です)
と私のindex.jsビュー:
編集:
これは、ビュー内のconsole.log(this.collection)の出力です:http://i.stack.imgur.com/ZQBUD.png
Edit2:
Railsが有罪だと思います。静的コレクションを使用すると、すべてが正常に機能します
backbone.js - Backbone.js イベント ハンドラーが複数回トリガーされる
レンダリングに渡される引数に応じて、リストを編集するためのフォームまたはリスト自体をレンダリングする Form というビューがあります。表示/編集モードを切り替えることができるように、イベント ハンドラーを追加しました。簡単にするために、以下のコードからこれを取り出しましたが、これはビューがコンテキストで何をするかについて少しコンテキストを提供するだけです。
このフォーム ビューを、フォームまたはリストをレンダリングする必要がある別のビューの子としてインスタンス化できます。これは、フォームとしてレンダリングされる新しいビューで実行しました。
保存する必要があるときは、form:save イベントを呼び出します。これにより、フォームを保存する Form ビューでルーチンがトリガーされます。ここでは、console.log を呼び出して、動作することを示しています。私のコードでは、ApplicationView によって挿入されたナビゲーション ボタンにバインドする $('a#submit').click バインディングを介して form:save を呼び出します (ただし、この質問の目的には関係ないと思います)。
新しいビューから離れて、何度も戻ったとしましょう。保存を押すと、新しいフォーム ビューをインスタンス化してレンダリングした回数だけメソッドが実行されます。
ここのところ:
私は、フォームビューのクローズメソッドで、新しいビューから unbind() と remove() を実行しようとしましたが、うまくいきませんでした。
スコーピングに問題があるかもしれないと思いますが、よくわかりません。
これは私のナビゲーション バインディングとは関係ありません。
これはゾンビビューに関係していると思います。
一度だけ実行するためのポインタはありますか?
javascript - Backbone.js ビューにモデルとコレクションを含めることはできますか?
Backbone.jsView
にModel
と を含めることはできますCollection
か?
私が尋ねている理由は、(リーフレット ライブラリを使用して) 場所がプロットされたマップを保持するビューで作業しているためです。
はCollection
、マップ上にプロットされる座標を保持するモデルのグループです。
マップのModel
境界やマップの形状などを保持します。
これを他にどのようにやってのけるかわかりません...
どんな助けでも大歓迎です、ありがとう!
backbone.js - バックボーン アプリケーションでモデルをフェッチするのは誰ですか?
バックボーン アプリケーションで、モデルがフェッチされるタイミングに関するベスト プラクティスは何ですか? 以下の可能性が見えてきました。
- ビューはモデル fetch メソッドを呼び出します
- 他の JavaScript コードはフェッチ モデルを呼び出しますか? もしそうなら、このコードはいつ、どのような構造になりますか? これはバックボーンに欠けているコントローラーの概念ですか?
backbone.js - デフォルトのビューイベントバインディングのバインドを解除するにはどうすればよいですか?
バックボーンマリオネットアイテムビューによってレンダリングされるコレクションがあります。コレクションがリセットされるたびに、ビューが再レンダリングされます。私が解決できる限り、それはデフォルトのBackbone.Marionetteの動作です。無効にする方法はありますか?
javascript - ビューが置き換えられた後にバックボーン ビュー イベントが発生せず、ページに戻される
問題:
ビュー内で設定されたイベントは、ビューが を使用して別のものに置き換えられ、 を使用$element.html(anotherView)
してページに戻された後に発生しません#element.html(theView)
。
例:
イベントは、このコードの実行後に機能します。
このコードは、後でビューがページ上で別のものに置き換えられたときに発生します。
ビューがページに再度追加されると、イベントは機能しなくなります。
ruby-on-rails - Backbone.js とハンドルバーを使用した Rails
私のアプリについて:
- Rails 3.2.6 と backbone.js (backbone-on-rails gem) およびハンドルバー テンプレート エンジンを使用しています。
- ルートとビューを作成すると、うまく機能します。私の見解:
- テンプレートを作成しました (assets dir: assets/templates/peoples/index.hbs):
ページを更新すると、次のエラー メッセージが表示されます。
キャッチされていない TypeError: null のメソッド 'match' を呼び出せません
テンプレートファイルが間違っている可能性があると思います:
これには以下が含まれます:
backbone.js - 戻るときにバックボーン コレクションがレンダリングされない
Trigger.io で構築しているバックボーン アプリがあり、電話のツールバーの [戻る] ボタンをクリックするとデータが消える理由が少しわかりません。
セットアップは次のとおりです。
次のようなビュー、SearchResultsView があります (簡潔にするために Trigger.io コードは削除されています)。
テンプレートは次のとおりです。
そして、ここにルーターがあります:
実際にどのように機能するかは次のとおりです。最初にページをロードしたとき、結果のリストはありません (そうあるべきです)。クエリを入力して検索を実行すると、返されて、必要に応じてリストに入力されます。次に、アイテムをクリックして別のビューに移動し、[戻る] をクリックすると、リストは再び空になります。
私がやろうとしているのは、コレクションがまだ存在するかどうかをテストすることです。存在する場合は、先に進んでリストを再レンダリングしますが、リストをレンダリングすることはありません。コンソールにログを記録してデータを表示できるため、コレクションは存在します。
私の疑いでは、 #resultsList 要素がまだ利用できないため、結果を追加しようとすると、それが見つからないため、何も表示されません。
そう:
- これは正しいと思いますか?
- なんで?これは、正常に動作する初期ロードとどう違うのでしょうか?
うまくいけば、私は十分に明確です。簡潔にするために、モデルとコレクションは含めていません。それらが役立つ場合は、喜んでそれらを含めます (ただし、これはビューの問題であると考える傾向があります)。
ありがとう!
backbone.js - # hrefs のクリック イベントを抑制するにはどうすればよいですか?
リンクの href がハッシュ (#) の場合、クリック イベントを自動的に抑制したいと考えています。各ビュー内で e.preventDefault() を使用してイベントを停止する必要はありません。
# hrefs のアプリケーション全体でクリック イベントを停止するにはどうすればよいですか?