Backbone.Events
構成
- Public API
- クライアントとのI/F
-
_events
- コールバック、イベント、コンテキストを管理するプライベートなプロパティ
- Backboneのイベント系メソッドは、ようするに本プロパティへの操作を抽象化したもの
-
eventsApi()
-
'event1 event2'
のようにイベント名が複数指定されることを考慮したイベント名パーサー兼イテレーター - 本メソッドにより、イベントの実処理からパーサーやイテレータを分離でき、実処理が簡潔になる
-
-
onApi() offApi() triggerApi()
-
_events
を使用して、イベントの登録・解除・発火の実処理を担う - 引数として
_events
を受け取って、加工後のオブジェクトを返すのでテストが容易そう
-
// @onApi()
// `_events`が`events`に引数として渡ってくる
var handlers = events[name] || (events[name] = []);
...
// イベント名をキーとしてコールバック等を保持する
handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});
// @eventsApi()
// 複数指定されたイベント名を分割して個別に`iteratee`(イベントの実処理)を実行する
for (names = name.split(eventSplitter); i < names.length; i++) {
events = iteratee(events, names[i], callback, opts);
}
Backbone.Model
Backbone.Collection
Backbone.Router
URLとハンドラを関連づける。
-
Backbone.History
のラッパー- イベントの検出やコールバック関数の実行は
Backbone.History
が担う
- イベントの検出やコールバック関数の実行は
- URL更新はブラウザの
hashchange
イベントを検出する
Backbone.History
Backbone.Sync
Backbone.View
Backbone.noConflict()
// Backbone.js読み込み前に定義されている`Backbone`を保持する
var previousBackbone = root.Backbone;
Backbone.noConflict = function() {
root.Backbone = previousBackbone;
// `this === Backbone`であるので、呼び出し元では戻り値をBackboneオブジェクトとしてリヨ用可能となる。
return this;
};
- 事前定義している
Backbone
をpreviousBackbone
に保持する -
Backbone.noConflict()
にて、事前定義のBackbone
を差し戻し、戻り値にBackbone.jsが定義するBackbone
を返す- 事前定義の
Backbone
はそのまま参照でき、Backbone.jsが定義するBackbone
はBackbone.noConflict()
の戻り値から参照可能となる
- 事前定義の
Backbone.$
Backbone.$ = $;
-
Backbone
のプロパティとして$
を保持する - プロパティを公開扱いとして、Backboneが利用するjQueryオブジェクトを外部から変更可能とする