Skip to content

Commit

Permalink
updated dependencies to latest versions
Browse files Browse the repository at this point in the history
  • Loading branch information
Derick Bailey committed Jul 10, 2013
1 parent 9975156 commit 5dcf9d8
Show file tree
Hide file tree
Showing 4 changed files with 4,546 additions and 4,335 deletions.
81 changes: 20 additions & 61 deletions public/javascripts/backbone.babysitter.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Backbone.BabySitter
// -------------------
// v0.0.5
// v0.0.6
//
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
// Distributed under MIT license
Expand All @@ -18,14 +18,13 @@ Backbone.ChildViewContainer = (function(Backbone, _){
// Container Constructor
// ---------------------

var Container = function(initialViews){
var Container = function(views){
this._views = {};
this._indexByModel = {};
this._indexByCollection = {};
this._indexByCustom = {};
this._updateLength();

this._addInitialViews(initialViews);
_.each(views, this.add, this);
};

// Container Methods
Expand All @@ -35,7 +34,7 @@ Backbone.ChildViewContainer = (function(Backbone, _){

// Add a view to this container. Stores the view
// by `cid` and makes it searchable by the model
// and/or collection of the view. Optionally specify
// cid (and model itself). Optionally specify
// a custom key to store an retrieve the view.
add: function(view, customIndex){
var viewCid = view.cid;
Expand All @@ -48,11 +47,6 @@ Backbone.ChildViewContainer = (function(Backbone, _){
this._indexByModel[view.model.cid] = viewCid;
}

// index it by collection
if (view.collection){
this._indexByCollection[view.collection.cid] = viewCid;
}

// index by custom
if (customIndex){
this._indexByCustom[customIndex] = viewCid;
Expand All @@ -62,18 +56,16 @@ Backbone.ChildViewContainer = (function(Backbone, _){
},

// Find a view by the model that was attached to
// it. Uses the model's `cid` to find it, and
// retrieves the view by it's `cid` from the result
// it. Uses the model's `cid` to find it.
findByModel: function(model){
var viewCid = this._indexByModel[model.cid];
return this.findByCid(viewCid);
return this.findByModelCid(model.cid);
},

// Find a view by the collection that was attached to
// it. Uses the collection's `cid` to find it, and
// retrieves the view by it's `cid` from the result
findByCollection: function(col){
var viewCid = this._indexByCollection[col.cid];
// Find a view by the `cid` of the model that was attached to
// it. Uses the model's `cid` to find the view `cid` and
// retrieve the view using it.
findByModelCid: function(modelCid){
var viewCid = this._indexByModel[modelCid];
return this.findByCid(viewCid);
},

Expand Down Expand Up @@ -103,26 +95,13 @@ Backbone.ChildViewContainer = (function(Backbone, _){
delete this._indexByModel[view.model.cid];
}

// delete collection index
if (view.collection){
delete this._indexByCollection[view.collection.cid];
}

// delete custom index
var cust;

for (var key in this._indexByCustom){
if (this._indexByCustom.hasOwnProperty(key)){
if (this._indexByCustom[key] === viewCid){
cust = key;
break;
}
_.any(this._indexByCustom, function(cid, key) {
if (cid === viewCid) {
delete this._indexByCustom[key];
return true;
}
}

if (cust){
delete this._indexByCustom[cust];
}
}, this);

// remove the view from the container
delete this._views[viewCid];
Expand All @@ -134,44 +113,24 @@ Backbone.ChildViewContainer = (function(Backbone, _){
// Call a method on every view in the container,
// passing parameters to the call method one at a
// time, like `function.call`.
call: function(method, args){
args = Array.prototype.slice.call(arguments, 1);
this.apply(method, args);
call: function(method){
this.apply(method, _.tail(arguments));
},

// Apply a method on every view in the container,
// passing parameters to the call method one at a
// time, like `function.apply`.
apply: function(method, args){
var view;

// fix for IE < 9
args = args || [];

_.each(this._views, function(view, key){
_.each(this._views, function(view){
if (_.isFunction(view[method])){
view[method].apply(view, args);
view[method].apply(view, args || []);
}
});

},

// Update the `.length` attribute on this container
_updateLength: function(){
this.length = _.size(this._views);
},

// set up an initial list of views
_addInitialViews: function(views){
if (!views){ return; }

var view, i,
length = views.length;

for (i=0; i<length; i++){
view = views[i];
this.add(view);
}
}
});

Expand Down
Loading

0 comments on commit 5dcf9d8

Please sign in to comment.