2

backbone.relational ソース コードを解読しようとしています。多くの独自のイベントが発生することがわかりました。いくつかのモデルでログオンを行ったところ、これらのイベントの多くが理由もなく発生しているように見えることがわかりました。

大きな問題は、どのイベントをリッスンする必要があり、どれが内部イベントかということです

Backbone.Relational が起動するように見えるイベントは次のとおりです。

  • update:[attribute] が起動するようです [725、941 行目]
  • リレーショナル:追加 これは、コレクションで .add() が呼び出されたときに発生するようです
  • relational:remove コレクションで .remove() が呼び出されたときに発生するようです [1651, 1003]
  • relationshipal:reset これには韻も理由もないようです (なぜソート時に解雇されるのですか!!!) [1664, 1675]
  • リレーショナル:変更:[属性]: これが何をするかわからない [1138]

誰かがそれぞれの目的と、トリガーの一部をソースから削除できるかどうかを説明できますか

比較のために、バックボーンのネイティブ イベント:

  • 「追加」 (モデル、コレクション、オプション) — モデルがコレクションに追加されたとき。
  • 「削除」 (モデル、コレクション、オプション) — モデルがコレクションから削除されたとき。
  • 「リセット」 (コレクション、オプション) — コレクションの内容全体が置き換えられたとき。
  • "sort" (コレクション、オプション) — コレクションが再ソートされたとき。
  • 「変更」 (モデル、オプション) — モデルの属性が変更されたとき。
  • "change:[属性]" (モデル、値、オプション) — 特定の属性が更新されたとき。
  • "destroy" (モデル、コレクション、オプション) — モデルが破棄されたとき。
  • "request" (モデル、xhr、オプション) — モデル (またはコレクション) がサーバーへのリクエストを開始したとき。
  • "sync" (モデル、応答、オプション) — モデル (またはコレクション) がサーバーと正常に同期されたとき。
  • "error" (モデル、xhr、オプション) — サーバーでモデルの保存呼び出しが失敗した場合。
  • 「無効」 (モデル、エラー、オプション) — モデルの検証がクライアントで失敗した場合。
  • "route:[name]" (params) — 特定のルートが一致したときにルーターによって起動されます。
  • "route" (router, route, params) — いずれかのルートが一致したときに履歴 (またはルーター) によって起動されます。
  • "all" — この特別なイベントは、トリガーされたイベントに対して発生し、イベント名を最初の引数として渡します。
4

1 に答える 1

4

各イベントの目的は、Backbone.Relational の readmeに明確に記載されています。

  • Backbone.RelationalModel新しいイベントをfor にバインドします。
    • 関係への追加HasMany(にバインドadd:<key>)
    • リレーションからの削除HasMany( にバインドremove:<key>)
    • リレーションのリセットHasMany( にバインドreset:<key>)
    • HasManyとのHasOne関係 ( にバインドupdate:<key>)のキー自体への変更

どのイベントをリッスンする必要があるかについては、必要に応じてすべてのイベントを聞く必要があります。それが彼らがそこにいて、文書化されている理由です。

どれが内部で使用されているかについては、答えはBackbone.Relational ソースにあります。ソース ファイルでを検索する.bindと、次のイベントを内部的にリッスンしていることがわかります。

  • relational:add
  • relational:remove
  • relational:change:key
  • relational:reset

したがって、イベントトリガーのいずれかがソースから「安全に」削除できるとは思えません。一般的に言えば、ライブラリ ソースにパッチを適用することは、問題に対処するための間違った方法だと思います。

ここ数日、Backbone.Relational イベントに関連するいくつかの質問を投稿しました。イベントが問題を引き起こしている理由を説明してみてください。回避策を探しますか?

于 2013-01-26T12:24:01.180 に答える