Skip to content

Instantly share code, notes, and snippets.

@torifat
Created November 29, 2012 19:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save torifat/4171435 to your computer and use it in GitHub Desktop.
Save torifat/4171435 to your computer and use it in GitHub Desktop.
RivetsJS Adapter for BackboneJS with RequireJS
define(['rivets', 'backbone'], function(rivets, Backbone){
rivets.configure({
adapter: {
subscribe: function(obj, keypath, callback) {
if (obj instanceof Backbone.Collection) {
obj.on('add remove reset', function () {
callback(obj[keypath]);
});
} else {
obj.on('change:' + keypath, function (m, v) {
callback(v);
});
}
},
unsubscribe: function(obj, keypath, callback) {
if (obj instanceof Backbone.Collection) {
obj.off('add remove reset', function () {
callback(obj[keypath]);
});
} else {
obj.off('change:' + keypath, function (m, v) {
callback(v);
});
}
},
read: function(obj, keypath) {
if (obj instanceof Backbone.Collection) {
// keypath = null
return obj['models'];
} else {
return obj.get(keypath);
}
},
publish: function(obj, keypath, value) {
if (obj instanceof Backbone.Collection) {
obj[keypath] = value;
} else {
obj.set(keypath, value);
}
}
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment