2013-08-07 80 views
1

我是新來的emberjs和一個簡單的CRUD應用程序。我正在使用餘燼數據和localstorage-adapter將記錄保存在瀏覽器的本地存儲中。如何使用ember數據和本地存儲適配器更新本地存儲器中的記錄?

我想使用localstorage-adaptor更新記錄,但它是拋出錯誤。

我列出我的代碼在這裏:

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();    
    } 

我正在使用上面的代碼以下錯誤:

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); 

}有沒有一種方法 'updateRecords'

我使用下面的代碼創造新紀錄,其中工作正常:

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(); 
    } 
+0

您會得到什麼錯誤? – intuitivepixel

+0

@intuitivepixel:我錯誤地更新了我的問題。 –

+1

你可以首先獲取你想要更新的記錄,改變它的屬性並調用'save'。 即使在LSAdapter中存在'updateRecords',它也會要求您確定應該編輯的記錄,並且可能需要一組對象而不是單個對象的數組,如在符號中。 – chrmod

回答

0

您使用的是updateRecords作爲複數,應該是updateRecord

相關問題