問題タブ [backbone-events]
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.
jquery - コレクション内のモデルの更新
私の質問は、コレクション内のモデルをどのように更新しますか? これが私がやっていることです。ページの読み込み時に、連絡先のリストを取得します。あるビューでは、これらの連絡先を順不同のリストにリストします。各連絡先をクリックすると、編集フォームが表示されます。連絡先に変更を加えたら、連絡先を保存できます。これにより、変更されたモデルをコレクションに保存するメソッドが表示されます。これをどのように行いますか?バックボーンのドキュメントには update メソッドがありません (または、少なくとも私には表示されません)。これを行う方法を作成しましたが、それが推奨されるバックボーンの方法であるかどうかはわかりません。ここにあります:
次のような関数があると思います。
助けてくれてありがとう
javascript - collection.create() で作成されたモデルのエラー イベントにバインドしますか?
コメントのコレクションと、新しいコメントを作成するために使用されるビューがあります。各コメントには、クライアント側の検証が行われています。
Comments コレクションは非常にシンプルです。
ビューにコメントを作成しNewComment
ます。このビューはコメント コレクションにアクセスでき、それをcreate
新しいコメントに使用します。ただし、Comment
モデルでの検証の失敗は、コレクションを通じてバブルアップしているようには見えません。これを行うバッターの方法はありますか?
javascript - Backbone.js-トリガーを使用してイベントをトリガーし、データを渡します
私はbackbone.jsをMVCフレームワークとして使用してタブメニューコンポーネントを作成しています。ユーザーがタブをクリックすると、コンポーネントはタブを切り替えます(内部操作)が、コンポーネントのリスナーがイベントに関連付けられたアクションに応答するようにします。この背後にある考え方は、さまざまなクリックを特定のアクションに抽象化することです。たとえば、各タブのモデルは、次の構造のハッシュです。
トリガーされるイベントは「アクション」と呼ばれるため、リスナーは「アクション」に応答しますが、特定のコマンドを転送します。例えば:
次に、リスナーは次のようにイベントを処理します。
}
これは可能ですか?ドキュメントからこれを収集することはできませんでした。あなたが提供できる洞察を事前に感謝します。
javascript - BackboneJS:ビューからのフォーム送信時にフォーム検証をトリガーします
そこで、Backbone.jsを使用してJavaScriptコードを構造化し、モジュラーアプリケーションを使用し始めましたが、イベントに関して問題が発生しました。
フォームを処理して検証する単純なビューを作成したいと思います。将来的には、ライブ検証、ホバー効果などのすべてのJavaScript機能を追加したいと思います。
これは私が今持っている単純化されたコードです:
私が抱えていた問題は、フォームを送信したときにvalidateFields関数が呼び出されないことです。また、コンストラクターでこれを使用してみました。
これで、最後のコードは機能しますが、検証関数内の「this」は、Formオブジェクトではなく、$('#formid')オブジェクトになります。
javascript - バックボーン イベント委任 eventName の問題
私は十分に単純なイベントオブジェクトを持つビューを持っています(それは甘いのでcoffeescriptで)
私のイベントはバインドされていません。縮小されていない 0.5.3 Backbone.js ファイルの 967 行目に到達すると
Chrome にブレークポイントを設定すると、jQuery 構文が正しくなくなります。
セレクターは正しいのですが、なぜ 963 行目にイベント タイプを示す「クリック」文字列が追加されているのかわかりません。メソッドは、アンダースコアでバインドされる前に my method として読み取られるconsole.log
ので、正しいです。
最終結果は、私のイベントがトリガーされないということです。ここで何が間違っているのか疑問に思います。
backbone.js - インスタンスごとのバックボーンイベントバインディング
リスト内のアイテムごとにサブビューを作成するビューがあります。一般的に、それらをListViewおよびListItemViewと呼びましょう。ListItemViewに次のようなイベントを添付しました。
ListItemViewのテンプレートで生成されたhtmlは、ほぼ次のようになっています(lb / rbを{/}に置き換えたため、「違法な」htmlが表示されます)。
問題は、[x]のいずれかをクリックすると、すべてのListItemViewがremoveItem関数をトリガーすることです。このモデルのIDから外れる場合は、ページ上のすべてのアイテムを削除します。クリックしたアイテムの親の親要素から離れてデータIDを取得すると、各ListItemViewインスタンスが削除されます。単一のremoveItemのみをトリガーするインスタンス固有のイベントを作成する方法はありますか?
ListViewにListItemViewの単一インスタンスを保持させ、ListItemモデルを再割り当てして、リスト内の各アイテムに対してレンダリングする場合、それは機能します。1つのアクション(removeItem)がトリガーされるだけです。問題は、データID属性を見つけるために、クリックターゲットの親の親を見つける必要があることです。個人的には、以下のスニペットはかなり醜く、より良い方法が必要だと思います。
誰かが与えるどんな助けも大いに感謝されるでしょう。
backbone.js - Backbone.js: モデル コレクションを変更するときにビューを自動的に更新するにはどうすればよいですか?
だから私はこのようなビューを持っています。
私はこのようなビューをインスタンス化しました...
別の場所 (別のビューのカスタム メソッド) 価格設定ビューのコレクションを更新しました
これは何もしないように見えます。
そのため、コレクションの項目は少なくなりましたが、DOM で新しいビューがレンダリングまたは更新されることはありません。
どうすればいいですか 1.) DOM のレンダリングを更新しますか? 2.) DOM を自動的に更新しますか? コレクションが変更されるたびにレンダリングするように何らかの方法で指示する必要がありますか?
backbone.js - backbone.js のネストされたコレクション、イベントの発生を追加しますが、親モデルを返します
モデル内にコレクションをネストしようとしています。私はレシピを持っており、レシピには成分(モデル)を持つ成分リスト(コレクション)があります。
私は最初にバックボーンリレーショナルモデルを試しましたが、ネストされたビューとモデルを構造化する backbone.jsで提供されている方法を選択しました
コレクションに成分を追加すると、追加イベントがトリガーされます。
しかし、追加された材料を出力しようとしている私のコンソールでは、レシピモデルが返されています。
私のモデルは次のようになります
レシピモデル全体ではなく、コレクションに追加されたばかりの成分を返すバインドを取得するにはどうすればよいですか?
javascript - バックボーン ルーター イベント
Backbone.Router
ルーティングを実行する前と後の両方にイベントが存在しますか? 私のアプリは動作しjQuery.mobile
、ルートが実行される前に $.mobile.changePage への呼び出しが必要であり、コントローラーでは $.activePage によって現在表示されているページにアクセスできます。コントローラーのアクションが完了create
したら、ドキュメントでイベントをトリガーして、新しく作成された $.mobile 要素によって「強化」される必要があります。私はこれを交換して行いましたloadUrl
このような組み込みイベントはありますか?
javascript - backback.jsのビュー外のオブジェクトのイベントを処理する方法は?
バックボーン-todolistの例のように、私は要素のコレクションを持っています。リスト用と各要素用の2つのビューを作成しました。それは素晴らしい働きをします。
ただし、リストの要素を変更する必要があるため、要素のビューで、htmlフォームを含むカラーボックスプラグインを使用してポップアップを開くmodifyイベントを処理します。htmlは動的に作成され、colorbox要素に渡されます。
カラーボックスとバックボーン形式の追加プラグインを使用します。
現在:ポップアップは私のビューの(DOM内の)子ではないため、「ボタン送信」アクションでイベントを発生させる方法がわかりません。
コードのスニペットは次のとおりです(不要な部分は省略されています)。
ポップアップが開かれると、saveElメソッド(または関数?、どちらの用語がより正しいですか?)が起動されます。
また、別のバージョンのコードを試してみました。
この2番目のケースでは、ビューの作成時にsaveEl関数が呼び出されます(したがって、リストの要素ごとに1回)。
私はポップアップのビューを作成することを知っていますが、somEthingは、それが複雑すぎるので、もっと単純なアーキテクチャが必要だと言っています。
実際、質問はより一般的です。$(this.el)のスコープ外でDOMオブジェクトによって発生したイベントを、それらのビューを作成せずに処理することは可能ですか?
前もって感謝します。
- - - - - - - - -アップデート: - - - - - - -
動作するコードの最終バージョンは次のとおりです。