Backbone localStorage Adapter: Uncaught Error: A "url" property or function must be specified

937 views Asked by At

I've gone over the other posts on the same topic and perhaps I'm missing something in my own code but it seems to me things should be working. I've never worked with localStorage and backbone and seem to be missing something here. Any thoughts are greatly appreciated!

my instances:

var Address = {
  run: function() {
    this.router = new AddressRouter();
    this.contactscollection = new AddressCollection();
    this.addContact = new AddressAddView();
    this.listView = new AddressListView();
    Backbone.history.start();
  }
};

my collection:

var AddressCollection = Backbone.Collection.extend({
  model: AddressModel,
  localstorage: new Store('backbone-addressbook')
});

my model:

var AddressModel = Backbone.Model.extend({
  defaults: {
    id: '',
    name: '',
    email: ''
  }
});

and my view:

var AddressAddView = Backbone.View.extend({
el: '#content',
template: _.template($('#addContactTemplate').html()),
events: { 'submit form#addContactForm': 'createContact'},

createContact: function(){
    Address.contactscollection.create(this.newAttributes());
    this.save();
    this.input.val('');
},

newAttributes: function() {
    return {
        id: $('#id').val(),
        name: $('#name').val(),
        email: $('#email').val()
    }
},

initialize: function() {
    _.bindAll(this, 'addContactPage','render');
},

addContactPage: function(id) {
    var contact = {},
    model = Address.contactscollection.get(id);
    if (id !== undefined && model !== undefined) {
        contact = model.toJSON();
    }
    this.$el.html(this.template({contact: contact}));
  }
});
1

There are 1 answers

1
user229044 On BEST ANSWER

Case matters.

localstorage: new Store('backbone-addressbook')

needs to be

localStorage: new Store('backbone-addressbook')

If localStorage isn't set, your collection is assumed to persist to a RESTful API, and a url is required.