Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - googlearchive/backbonefire: Backbone bindings for Firebase · GitHub
Skip to content
This repository was archived by the owner on Aug 25, 2018. It is now read-only.

Repository files navigation

Status: Archived

This repository has been archived and is no longer maintained.

status: inactive

BackboneFire

Build StatusCoverage StatusVersion

BackboneFire is the officially supported Backbone binding for Firebase data. The bindings let you use special model and collection types that allow for synchronizing data with Firebase.

Live Demo

Play around with our realtime Todo App demo. This Todo App is a simple port of the TodoMVC app using BackboneFire.

Basic Usage

Using BackboneFire collections and models is very similar to the regular ones in Backbone. To setup with BackboneFire use Backbone.Firebase rather than just Backbone.

Note: A Backbone.Firebase.Model should not be used with a Backbone.Firebase.Collection. Use a regular Backbone.Model with a Backbone.Firebase.Collection.

// This is a plain old Backbone ModelvarTodo=Backbone.Model.extend({defaults: {completed: false,title: 'New todo'}});// This is a Firebase Collection that syncs data from this urlvarTodos=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',model: Todo});

Downloading BackboneFire

To get started include Firebase and BackboneFire after the usual Backbone dependencies (jQuery, Underscore, and Backbone).

<!-- jQuery --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><!-- Underscore --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script><!-- Backbone --><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone.js"></script><!-- Firebase --><scriptsrc="https://cdn.firebase.com/js/client/2.0.3/firebase.js"></script><!-- BackboneFire --><scriptsrc="https://cdn.firebase.com/libs/backbonefire/0.5.1/backbonefire.js"></script>

Use the URL above to download both the minified and non-minified versions of BackboneFire from the Firebase CDN. You can also download them from the releases page of this GitHub repository. Firebase and Backbone can be downloaded directly from their respective websites.

You can also install BackboneFire via Bower and its dependencies will be downloaded automatically:

$ bower install backbonefire --save

Once you've included BackboneFire and its dependencies into your project, you will have access to the Backbone.Firebase.Collection, and Backbone.Firebase.Model objects.

Getting Started with Firebase

BackboneFire requires the Firebase database in order to sync data. You can sign up here for a free account.

autoSync

As of the 0.5 release there are two ways to sync Models and Collections. By specifying the property autoSync to either true of false, you can control whether the component is synced in realtime. The autoSync property is true by default.

autoSync: true

varRealtimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: true// this is true by default})// this collection will immediately begin syncing data// no call to fetch is required, and any calls to fetch will be ignoredvarrealtimeList=newRealtimeList();realtimeList.on('sync',function(collection){console.log('collection is loaded',collection);});

autoSync: false

// This collection will remain empty until fetch is calledvarOnetimeList=Backbone.Firebase.Collection.extend({url: 'https://<your-firebase>.firebaseio.com/todos',autoSync: false})varonetimeList=newOnetimeList();onetimeList.on('sync',function(collection){console.log('collection is loaded',collection);});onetimeList.fetch();

Backbone.Firebase.Collection

This is a special collection object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or a Firebase database reference as the url property.

Each model in the collection will have its own firebase property that is its reference in Firebase.

For a simple example of using Backbone.Firebase.Collection see todos.js.

varTodoList=Backbone.Firebase.Collection.extend({model: Todo,url: 'https://<your-firebase>.firebaseio.com/todos'});

You may also apply an orderByChild or some other query on a reference and pass it in:

Queries

varTodoList=Backbone.Firebase.Collection.extend({url: newFirebase('https://<your-firebase>.firebaseio.com/todos').orderByChild('importance')});

url as a function

The url property can be set with a function. This function must return a Firebase database ref or a url.

varTodoList=Backbone.Firebase.Collection.extend({url: function(){returnnewFirebase(...);}});

initialize function

Any models added to the collection will be synchronized to the provided Firebase database. Any other clients using the Backbone binding will also receive add, remove and changed events on the collection as appropriate.

You should add and remove your models to the collection as you normally would, (via add() and remove()) and remote data will be instantly updated. Subsequently, the same events will fire on all your other clients immediately.

add(model)

Adds a new model to the collection. If autoSync set to true, the newly added model will be synchronized to your Firebase database, triggering an add and sync event both locally and on all other clients. If autoSync is set to false, the add event will only be raised locally.

todoList.add({subject: 'Make more coffee',importance: 1});todoList.on('all',function(event){// if autoSync is true this will log add and sync// if autoSync is false this will only log addconsole.log(event);});

remove(model)

Removes a model from the collection. If autoSync is set to true this model will also be removed from your Firebase database, triggering a remove event both locally and on all other clients. If autoSync is set to false, this model will only trigger a local remove event.

todoList.remove(someModel);todoList.on('all',function(event){// if autoSync is true this will log remove and sync// if autoSync is false this will only log removeconsole.log(event);});

create(value)

Creates and adds a new model to the collection. The newly created model is returned, along with an id property (uniquely generated by the Firebase client library).

varmodel=todoList.create({bar: "foo"});todoList.get(model.id);todoList.on('all',function(event){// will log add and syncconsole.log(event);});

Backbone.Firebase.Model

This is a special model object that will automatically synchronize its contents with your Firebase database. You may extend this object, and must provide a Firebase database URL or reference as the url property.

varTodo=Backbone.Firebase.Model.extend({url: "https://<your-firebase>.firebaseio.com/mytodo"});

You may apply query methods as with Backbone.Firebase.Collection.

urlRoot

The urlRoot property can be used to dynamically set the Firebase database reference from the model's id.

varTodo=Backbone.Firebase.Model.extend({urlRoot: 'https://<your-firebase>.firebaseio.com/todos'});// The url for this todo will be https://<your-firebase>.firebaseio.com/todos/1vartodo=newTodo({id: 1});

You do not need to call any functions that will affect remote data when autoSync is enabled. Calling fetch() will simply fire the sync event.

If autoSync is enabled, you should modify your model as you normally would, (via set() and destroy()) and remote data will be instantly updated.

autoSync: true

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: true// true by default});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// calling .set() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.set('name','Bob');

autoSync: false

varRealtimeModel=Backbone.Firebase.Model.extend({url: 'https://<your-firebase>.firebaseio.com/mytodo',autoSync: false});varrealtimeModel=newRealtimeModel();realtimeModel.on('sync',function(model){console.log('model loaded',model);});// this will fire off the sync eventrealtimeModel.fetch();// calling .save() will sync the changes to your database// this will fire the sync, change, and change:name eventsrealtimeModel.save('name','Bob');

set(value)

Sets the contents of the model and updates it in your database.

MyTodo.set({foo: "bar"});// Model is instantly updated in your database (and other clients)

destroy()

Removes the model locally, and from Firebase.

MyTodo.destroy();// Model is instantly removed from your database (and other clients)

Contributing

If you'd like to contribute to BackboneFire, you'll need to run the following commands to get your environment set up:

$ git clone https://github.com/firebase/backbonefire.git
$ cd backbonefire # go to the backbonefire directory
$ npm install -g grunt-cli # globally install grunt task runner
$ npm install -g bower # globally install Bower package manager
$ npm install # install local npm build / test dependencies
$ bower install # install local JavaScript dependencies
$ grunt watch # watch for source file changes

grunt watch will watch for changes to src/backbonefire.js and lint and minify the source file when a change occurs. The output files - backbonefire.js and backbonefire.min.js - are written to the /dist/ directory.

You can run the test suite via the command line using grunt test.

About

Backbone bindings for Firebase

Resources

Stars

292 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages