backbone-slide.js | |
---|---|
backbone-slide.js | |
Namespace | window.BackboneSlide ={
Model:{},
Collection:{},
View:{},
lock:false,
current:0,
option:{}, |
Entry point of backbone-slide.js | init:function(opts){
BackboneSlide.option = opts || {}; |
create DOM Element for slideshow. | var wrap = document.createElement('div')
wrap.id = "wrap";
$('body').append(wrap); |
crate view | var slideView = new BackboneSlide.View.SlideView();
}
};
$(function(){ |
Model | BackboneSlide.Model.Slide = Backbone.Model.extend({
}); |
Collection | BackboneSlide.Collection.Slides = Backbone.Collection.extend({
model: BackboneSlide.Model.Slide
}); |
View | BackboneSlide.View.SlideView = Backbone.View.extend({ |
| model:BackboneSlide.Model.Slide, |
And | el:$('body'), |
initialize view | initialize:function(){ |
create collection | this.collection = new BackboneSlide.Collection.Slides();
var no = 0;
var self = this;
_.bindAll(this, "render","keyPress","move");
$(document).bind('keydown', this.keyPress); |
search | _($(self.el).find('section')).each(function(section){
var slide = new BackboneSlide.Model.Slide({
elements:$(section).children(),
no:no,
}); |
create start page. | if(no == 0) self.render(slide); |
add model to collection | self.collection.add(slide);
no++;
});
}, |
render slide in | render:function(slide,forward){
$('#wrap').empty();
$('#wrap').fadeOut(250,function(){
$('#wrap').append(slide.get('elements'));
});
$('#wrap').fadeIn(500);
}, |
handle key press | keyPress:function(e){
switch (e.keyCode) {
case 32: // space
case 39: // arrow-right
this.move(+1);
break;
case 8: // delete
case 37: // arrow-left
this.move(-1);
break;
default:
break;
}
}, |
move slide | move:function(direction){
if (BackboneSlide.lock) return;
BackboneSlide.lock = true;
this.model = this.collection.at(BackboneSlide.current+direction);
if (this.model) {
BackboneSlide.current +=direction;
this.render(this.model,direction);
}
BackboneSlide.lock = false;
}
});
});
|