Skip to content
Seth Livingston edited this page Jul 14, 2014 · 14 revisions

Directory of Rivets.js adapters with compatibility tables for common libraries and frameworks.

Backbone.js models / Stapes.js

rivets.configure({
  adapter: {
    subscribe: function(obj, keypath, callback) {
      obj.on("change:" + keypath, callback)
    },
    unsubscribe: function(obj, keypath, callback) {
      obj.off("change:" + keypath, callback)
    },
    read: function(obj, keypath) {
      return obj.get(keypath)
    },
    publish: function(obj, keypath, value) {
      obj.set(keypath, value)
    }
  }
})

Backbone.js models with (partial) support for backbone-relational

CanJS

rivets.configure({
  adapter: {
    subscribe: function(obj, keypath, callback) {
      obj.bind('change', function(ev, attr, how, newVal, oldVal) {
        callback(newVal)
      })
    },
    unsubscribe: function(obj, keypath, callback) {
      obj.unbind('change', callback)
    },
    read: function(obj, keypath) {
      return obj.attr(keypath)
    },
    publish: function(obj, keypath, value) {
      obj.attr(keypath, value)
    }
  }
})

Iota Observable

https://github.com/helgoboss/rivets-iota-observable-adapter

Watch.js

rivets.configure({
  adapter: {
    subscribe: function(obj, keypath, callback) {
      watch(obj, keypath, callback)
    },
    unsubscribe: function(obj, keypath, callback) {
      unwatch(obj, keypath, callback)
    },
    read: function(obj, keypath) {
      return obj[keypath]
    },
    publish: function(obj, keypath, value) {
      obj[keypath] = value
    }
  }
})

YUI

Rivets adapter for Y.Model.

CoffeeScript:

rivets.adapters[':'] =

  subscribe: (obj, keypath, callback) ->
    obj.afterHandle = obj.after(keypath + 'Change', callback)

  unsubscribe: (obj, keypath, callback) ->
    obj.afterHandle?.detach()

  read: (obj, keypath) ->
    obj.get(keypath)

  publish: (obj, keypath, value) ->
    obj.set(keypath, value)

JavaScript:

rivets.adapters[':'] = {                                            
  subscribe: function(obj, keypath, callback) {                     
    return obj.afterHandle = obj.after(keypath + 'Change', callback);  
  },                                                                
  unsubscribe: function(obj, keypath, callback) {                   
    var _ref;                                                       
    return (_ref = obj.afterHandle) != null ? _ref.detach() : void 0;  
  },                                                                
  read: function(obj, keypath) {                                    
    return obj.get(keypath);                                        
  },                                                                
  publish: function(obj, keypath, value) {                          
    return obj.set(keypath, value);                                 
  }                                                                 
Clone this wiki locally