1
votes

I am new to emberjs and making one simple CRUD application. I am using ember data and localstorage-adapter to save record in local storage of browser.

I am trying to update record using localstorage-adapter but it is throwing error.

I have listed my code here :

updatecontact: function(){//save data in local storage
        var fname = this.obj_form_edit_data.get('cont_data.fname');
        var lname = this.get('cont_data.lname');
        var email = this.get('cont_data.email');
        var contactno = this.get('cont_data.contactno');
        var gendertype = ((this.get('isMale') == true) ? true : false);
        var contactype = $(".selectpicker").val();
        Grid.ModalModel.updateRecords({ 
          fname: fname,
          lname: lname,
          email: email,
          contactno: contactno,
          gendertype: gendertype,
          contactype: contactype
        });
        this.get('store').commit();             
    }

I am getting following error using above code :

Uncaught TypeError: Object function () {
if (!wasApplied) {
  Class.proto(); // prepare prototype...
}
o_defineProperty(this, GUID_KEY, undefinedDescriptor);
o_defineProperty(this, '_super', undefinedDescriptor);
var m = meta(this);
m.proto = this;
if (initMixins) {
  // capture locally so we can clear the closed over variable
  var mixins = initMixins;
  initMixins = null;
  this.reopen.apply(this, mixins);
}
if (initProperties) {
  // capture locally so we can clear the closed over variable
  var props = initProperties;
  initProperties = null;

  var concatenatedProperties = this.concatenatedProperties;

  for (var i = 0, l = props.length; i < l; i++) {
    var properties = props[i];

    Ember.assert("Ember.Object.create no longer supports mixing in other definitions, use createWithMixins instead.", !(properties instanceof Ember.Mixin));

    for (var keyName in properties) {
      if (!properties.hasOwnProperty(keyName)) { continue; }

      var value = properties[keyName],
          IS_BINDING = Ember.IS_BINDING;

      if (IS_BINDING.test(keyName)) {
        var bindings = m.bindings;
        if (!bindings) {
          bindings = m.bindings = {};
        } else if (!m.hasOwnProperty('bindings')) {
          bindings = m.bindings = o_create(m.bindings);
        }
        bindings[keyName] = value;
      }

      var desc = m.descs[keyName];

      Ember.assert("Ember.Object.create no longer supports defining computed properties.", !(value instanceof Ember.ComputedProperty));
      Ember.assert("Ember.Object.create no longer supports defining methods that call _super.", !(typeof value === 'function' && value.toString().indexOf('._super') !== -1));

      if (concatenatedProperties && indexOf(concatenatedProperties, keyName) >= 0) {
        var baseValue = this[keyName];

        if (baseValue) {
          if ('function' === typeof baseValue.concat) {
            value = baseValue.concat(value);
          } else {
            value = Ember.makeArray(baseValue).concat(value);
          }
        } else {
          value = Ember.makeArray(value);
        }
      }

      if (desc) {
        desc.set(this, keyName, value);
      } else {
        if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
          this.setUnknownProperty(keyName, value);
        } else if (MANDATORY_SETTER) {
          Ember.defineProperty(this, keyName, null, value); // setup mandatory setter
        } else {
          this[keyName] = value;
        }
      }
    }
  }
}
finishPartial(this, m);
delete m.proto;
finishChains(this);
this.init.apply(this, arguments);

} has no method 'updateRecords'

I am using following code to create new record which working fine :

savecontact: function(){//save data in local storage
        var fname = this.obj_form_edit_data.get('cont_data.fname');
        var lname = this.obj_form_edit_data.get('cont_data.lname');
        var email = this.obj_form_edit_data.get('cont_data.email');
        var contactno = this.obj_form_edit_data.get('cont_data.contactno');
        var gendertype = ((this.get('isMale') == true) ? true : false);
        var contactype = $(".selectpicker").text();
        Grid.ModalModel.createRecord({  
          fname: fname,
          lname: lname,
          email: email,
          contactno: contactno,
          gendertype: gendertype,
          contactype: contactype
        });
        this.get('store').commit(); 
    }
1
what error do you get?intuitivepixel
@intuitivepixel: I have updated my question with error.Sachin
you may first fetch the record you want to update, change its properties and call save. Even if updateRecords would exist in LSAdapter it would require you do identify the records that should be edited and would probably take an array of objects not a single object as in your notation.chrmod

1 Answers

0
votes

You're using updateRecords as a plural, it should be updateRecord