Skip to content

Instantly share code, notes, and snippets.

@brian-mann
brian-mann / gist:6642272
Last active December 23, 2015 13:29
difference between jQuery deferreds and regular javascript callback style
## jQuery Deferred way
App.reqres.setHandler "folder:type:picker", ->
dfd = $.Deferred()
App.load "pickers", ->
dfd.resolve API.list()
dfd.promise()
promise = App.request "folder:type:picker"
promise.done (folderTypePicker) =>
@listenToOnce folderTypePicker, "folder:types:submitted"
@brian-mann
brian-mann / problem.js
Last active December 18, 2015 10:29 — forked from anonymous/problem.js
// JSON tree is this kind:
[
{
name: "Ob1",
subobjects: [
{name: "Un1", age: 2},
{name: "Un2", age: 5},
{name: "Un3", age: 4},
{name: "Un4", age: 5},
@PlanetExpress.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->
App.commands.setHandler "when:fetched", (entities, callback) ->
xhrs = _.chain([entities]).flatten().pluck("_fetch").value()
# if _.isArray(entities)
# xhrs.push(entity._fetch) for entity in entities
# else
# xhrs.push(entities._fetch)
class List.Event extends Marionette.ItemView
template: "events/list/templates/_event"
tagName: "tr"
triggers:
"click button" : "edit:event:clicked"
@brian-mann
brian-mann / gist:5460185
Created April 25, 2013 14:36
simple mixin pattern
#mixin =
#bar: -> alert "bar"
class Bar
#bar: -> alert "bar"
#baz: (b) -> console.log "baz", b, @
Bar.baz = (b) -> console.log "baz", b, @
class Foo extends Bar
@brian-mann
brian-mann / gist:5430655
Last active March 30, 2017 05:50
keyboard shortcuts in marionette views with mousetrap lib
_delegate = Backbone.Marionette.View::delegateEvents
_close = Backbone.Marionette.View::close
_.extend Backbone.Marionette.View::,
delegateEvents: (events) ->
_delegate.call(@, events)
@bindShortCuts()
bindShortCuts: ->
for key, method of _.result(@, "shortCuts")
do (Backbone) ->
_.extend Backbone.Marionette.Application::,
register: (instance, id) ->
@_registry ?= {}
@_registry[id] = instance
unregister: (instance, id) ->
delete @_registry[id]
CanSing =
sing: ->
console.log "I am #{@name} la la la"
include = (ctr, mixin) ->
console.log "including", ctr
for key of mixin
ctr.prototype[key] = mixin[key]
class Man
@brian-mann
brian-mann / gist:4198530
Created December 3, 2012 22:04
Component Structure
## /backbone/apps
## /backbone/entities
## /backbone/mixins
## /backbone/components
## Example Component as a class instantiated from an app's controller
## /backbone/components/pattern_selector/pattern_selector.js
@YOURAPP.module "Components", (Components, App, Backbone, Marionette, $, _) ->
class Components.PatternSelector
@brian-mann
brian-mann / FadeTransitionRegion.js
Created October 24, 2012 16:28
Allows jQuery animation transitions between marionette regions
var FadeTransitionRegion = Backbone.Marionette.Region.extend({
show: function(view){
this.ensureEl();
view.render();
this.close(function() {
if (this.currentView && this.currentView !== view) { return; }
this.currentView = view;