fetch: function () { if(conf.clientOnly){ this.fetched = true; var self = this; var htmls = foldify(conf.paths.html, {whitelist: [conf.displayType+"/*", "shared/*"], recursive: true}); for(var name in htmls) self.add({id: name, template: htmls[name]}); process.nextTick(function(){ self.trigger('fetched'); }); }else{ return Backbone.fetch.apply(this, arguments); } }
var View = require('../../shared/View'); var foldify = require('foldify'); var mixins = foldify('./mixins'); module.exports = function(options){ var FinalView = mixins["post-"+options.type] ? BaseView.extend(mixins["post-"+options.type]) : BaseView; return new FinalView(options); } var BaseView = View.extend({ className: 'post', prerender: function(){ if(this.prerendered) return if(!this.rendered){ var rendered = this.html.render("content.html", { '.goback a': { href: this.post.collection.length === 1 ? "/" : "/articles/"+this.typeSlug }, '.page-title span': this.post.get('title') }); this.$el.html( rendered ); } this.prerendered = true; if(this.post.fetched) return Backbone.transition( this.render().$el, {level:2} ); this.prerendering = true; var init = Backbone.transition( this.$el, {level:2} ); function signal(e){ this.prerendering = false; this.trigger("prerendered"); };