問題タブ [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.
backbone.js - Backbonejs でビューとモデルをクリーンアップする方法
問題は、サインアップから来てログインを呼び出すときに、以前のモデルリクエスト(サインアップ)も呼び出して、ログインとサインアップリクエストを同時に呼び出すことです(私のモデルはajaxリクエストです)、作成するたびに以前に呼び出されたモデルを削除するにはどうすればよいですか?私の見解では新しい要求です。
ありがとう。
javascript - バックボーン ビューのカスタム イベント
キーダウンによるユーザー入力を検証したい。このためには、キーダウン イベントが必要です。残念ながら、カスタム モデル イベントしか見つかりませんでした。
そのアプローチは確かにモデルイベントには問題ありませんが、これがビューやUI関連のものには正しい方法だとは思いません...
より良い説明をするために、これが私のイベントの使用方法です。
では、ビューで呼び出し可能なカスタム バックボーン イベントを作成する方法は何ですか?
backbone.js - ビューの HTML クラスを動的に変更するためのビュー メソッドのバインド
この div ボックスをクリックすると、className は正しく更新されますが、html は更新されません。したがって、ビューの className は「selected」に変更されますが、Web ページの div ボックス要素を調べると、「class="unselected」と表示されます。クリックしたときにhtmlも更新したいと思います。
アドバイスやチュートリアル/ドキュメントへのリンクをいただければ幸いです。
backbone.js - バックボーン、model.save の後に view.render を呼び出すときに 1 つのフィールドが設定されない
次の問題があります。ユーザーイベント(.twitterDefaultをクリック)でsaveイベントを呼び出します
次に、success 関数が呼び出され、モデル (klout、twitter、tester) にフィールドを設定します。すべてのフィールドが設定されています (ログ ステートメントはすべて、適切なオブジェクトを出力します。
ただし、次に view.render() を呼び出すと、ここで twitter はもう設定されていません。理由はわかりません。保存後に同期が行われないため、Twitter は上書きされません (さらに、success メソッドが呼び出される前に、Twitter もサーバーに保存されていることを確認しました)。
どんな助けでも大歓迎です!
次のようなコード (読みやすくするために削除されています)
$(関数() {
backbone-views - Backbone View テンプレートのレンダリングがいつ終了したかを知るにはどうすればよいですか?
単一ページのサイトに Backbone.js、Require.js、および Underscore.js を使用しています。
サブビューの入れ替えを処理するコンテナ ビューがあります。
サブビューの 1 つで、HTML テンプレートのレンダリングがいつ終了するかを知る必要があります。理由は次のとおりです。サブビュー (view_subview.html) の HTML テンプレートには、iframe とフォームが含まれています。
フォームを送信すると、myendpt.com/do が iframe に表示されるコンテンツの生成を処理します。
ロードされたらフォームを送信できるように、タイミングを把握しようとしています。
私のサブビューは次のようになります。
render() の $('#myForm').submit() 呼び出しは、実際にはフォームを送信しません。これはおそらく、HTML がまだロード中で、ドキュメントがまだ準備できていないためです。
$('#myForm').submit() 呼び出しをコンテナー ビューに移動すると、機能させることができますが、SubView がフォームの送信を所有するようにしたいと考えています。私のコンテナー ビュー (およびその他の無関係なサブビュー) は、SubView で何が起こるかを知ったり気にしたりする必要はありません。
送信を呼び出すことができるように、HTML が完全に読み込まれていることを SubView (および SubView のみ) で検出する最良の方法は何ですか?
javascript - 初期化の前にjavascriptウィンドウ要素をどのように参照できますか?
この例は、Backboneディレクトリデモアプリ https://github.com/ccoenraets/backbone-directory/blob/master/web/js/utils.js#L11から借用しています。
これは、文字列の配列[views]および[callback]関数で初期化します。
私の質問は、window [view](コード内の正確な位置へのリンクをクリック)を(私が見る限り)以前に初期化されていなかった場合にどのようにチェックできるかということです。正確でない場合は、コメントに記入してください。
javascript - add:trueパラメーターを使用してコレクションをフェッチするときにバックボーンビューを再レンダリングします
私はバックボーンコレクションを持っており、状況によっては、次のようにしてコレクションにさらに多くのモデルをフェッチしています。
新しいメンバーが到着したときに再レンダリングされるコレクションのビューが必要です。add:trueパラメータが原因で「リセット」イベントが発生しないため、2つのオプションが表示されます。
- this.render関数をコレクションの「add」イベントにバインドします。これは動作しますが、サーバーから到着した新しいモデルごとにレンダリング関数が呼び出されるようになります。
- フェッチパラメータとしてsilent:trueを渡し、次の行でthis.render()を明示的に呼び出しますが、次の行ではまだデータが到着していないため、古いデータで呼び出された関数をレンダリングします。
この問題を解決する他の方法は見つかりませんでした:(この場合はどうすればよいですか?
backbone.js - 子ビュー backbone.js から親ビューをレンダリングする
メイン ビューと、親ビューの子ビューであるモーダル ウィンドウがあります。
モーダルは、ajax を介して送信されるフォームで構成されます。
フォームを送信した後、子ビューから親ビューをレンダリングするにはどうすればよいですか?
javascript - ブラウザの「戻る」ボタンまたは直接ナビゲーションに対する異なる応答のための Backbone.js ルーター パターン
これら 2 つのイベントに対して異なる応答をする Backbone.js ルーターを実装するための適切なパターンはありますか。
- ダイレクト ナビゲーション- ユーザーは、URL をブラウザに直接入力するか、アプリケーションで
Router.navigate()
- ブラウザの「戻る」ボタン - ユーザーは「戻る」ボタンを押して、以前表示していたページに移動します。
私が尋ねる理由は、ユーザーが「戻る」ボタンを押した結果としてルーターが呼び出された場合、$('element_id').html(view.el)
データをモデルにリロードして再レンダリングせずに、古いビューをその要素に戻したいからです。景色。
ユーザーがブラウザーに URL を入力するか、リンクをクリックするか、アプリケーション内から Router.navigate() を呼び出してページに直接移動した結果としてルーターが呼び出された場合、ルーターに指示してもらいたいモデルがデータを再リクエストし、ビューの再レンダリングをトリガーします。
ヘルプや提案をいただければ幸いです。どうもありがとうございました。
javascript - DOM イベントなしで Backbone.js のビューからモデルに情報を取得する方法
私は Backbone.js を初めて使用し、モデルとビューの関係の適切なアーキテクチャを理解するのに苦労しています。
入力ボックスと、その入力ボックスの内容を取得してサーバーに送信するモデルを保持するビューがあります。
私の問題は、ビューがモデル データを更新するためのリクエストをトリガーする目立たない DOM イベント ( input.change
. 場合によっては、コード自体がモデルに更新をサーバーに送信するように要求する必要があります。
私はこれまで、この問題に対する 3 つの解決策を考えてきました。
入力要素の
keypress
イベントでモデルを更新しますget_input_value()
ビューがモデルで初期化されたら、入力ボックスの値を返す' ' と呼ばれる関数をビューに更新/モデルに追加します。アプリケーションがサーバーを更新するためにモデルを要求する必要がある場合は常に、ユーザーがビューに入力したすべての情報をモデルに更新するビュー内の関数を最初に呼び出します。
これは単純化された例であることに注意してください。ビューには子ビューも含まれており、そのすべてがユーザーが操作できる多くの要素を保持しています。サーバーを更新できるように、このすべての情報でモデルを更新する必要があります。
どんな助けや意見も歓迎します! 本当にありがとう!
編集 :::
machineghost の応答に基づいて、この問題を正しく説明していないことがわかりました。
DOM イベントがありますが、問題は、モデルを使用するビュー内から発生するとは限らないことです。ルーターまたは別のビューから発生し、グローバル イベント ハンドラーによってトリガーされる場合があります。さらに、1:1 のビューとモデルの関係はありません。このモデルは、モデルをさまざまな方法で表現する複数のビューで使用されます。したがって、この場合、サーバーを更新するコマンドはビューを経由するのではなく、モデル自体に送信する必要があるようです。その場合、モデルは「ビューと同期してください!」と言うことができなければなりません。
しかし、ルールを破らずにこれを行う方法がわかりません。これにより、アーキテクチャに関する他の問題が発生します...