javascript - Backbone.js model caching -
javascript - Backbone.js model caching -
note : very beginer on backbone platform !! :)
i have model in backbone:
var errors_model = backbone.model.extend( { total_errors : 0, error_messages : {}, initialize : function () { this.set('total_errors', 0); this.set('error_messages', {}); }, add_error : function (tab, field, error) { var error_messages = this.get('error_messages'); var error_md5 = this.md5(error); if(!(tab in error_messages)) { error_messages[tab] = {}; } if(!(field in error_messages[tab])) { error_messages[tab][field] = {}; } if(!(error_md5 in error_messages[tab][field])) { error_messages[tab][field][error_md5] = error; } this.set('error_messages', error_messages); this.increase_errors(); console.log(error_messages); }, remove_error : function (tab, field, error) { var error_messages = this.get('error_messages'); var error_md5 = this.md5(error); if(!(tab in error_messages) && !(field in error_messages[tab]) && !(error_md5 in error_messages[tab][field])) { return; } delete error_messages[tab][field][error_md5]; this.set('error_messages', error_messages); this.decrease_errors(); console.log(error_messages); }, increase_errors : function() { var total_errors = this.get('total_errors'); if('undefined' === typeof(total_errors)) { total_errors = 0; } ++total_errors; this.set('total_errors', total_errors); }, decrease_errors : function() { var total_errors = this.get('total_errors'); if('undefined' === typeof(total_errors)) { total_errors = 0; } if(0 === total_errors) { return; } --total_errors; this.set('total_errors', total_errors); } } ); com = window.com || {}; com.wp = com.wp || {}; com.wp.srb = com.wp.srb || {}; com.wp.srb.errors_model = new errors_model();
and utilize code:
com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'this error'); com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'another error'); com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'yet error'); com.wp.srb.errors_model.add_error('#ad', '#image_url', 'url error'); settimeout( function() { com.wp.srb.errors_model.remove_error('#ad', '#image_upload', 'another error'); }, 3500 );
but result getting both action (com.wp.srb.errors_model.add_error
, com.wp.srb.errors_model.remove_error
):
object {#ad: object} #ad: object #image_upload: object 13b7afb8b11644e17569bd2efb571b10: "this error" 69553926a7783c27f7c18eff55cbd429: "yet error" #image_url: object 2b4a9847e26368312704b8849de9247a: "url error" __proto__: object __proto__: object __proto__: object object {#ad: object} #ad: object #image_upload: object 13b7afb8b11644e17569bd2efb571b10: "this error" 69553926a7783c27f7c18eff55cbd429: "yet error" #image_url: object 2b4a9847e26368312704b8849de9247a: "url error" __proto__: object __proto__: object __proto__: object object {#ad: object} #ad: object #image_upload: object 13b7afb8b11644e17569bd2efb571b10: "this error" 69553926a7783c27f7c18eff55cbd429: "yet error" #image_url: object 2b4a9847e26368312704b8849de9247a: "url error" __proto__: object __proto__: object __proto__: object object {#ad: object} #ad: object #image_upload: object 13b7afb8b11644e17569bd2efb571b10: "this error" 69553926a7783c27f7c18eff55cbd429: "yet error" #image_url: object 2b4a9847e26368312704b8849de9247a: "url error" __proto__: object __proto__: object __proto__: object object {#ad: object} #ad: object #image_upload: object 13b7afb8b11644e17569bd2efb571b10: "this error" 69553926a7783c27f7c18eff55cbd429: "yet error" #image_url: object 2b4a9847e26368312704b8849de9247a: "url error" __proto__: object __proto__: object __proto__: object
so question is, backbone model, somehow caching object attributes? doing wrong?
note: part of plugin used in wordpress dashboard, don't know if wordpress uses plugin caching model data.
console holds references objects, hence when inspect them after code execution, state of object right now, not when invoked:
console.log(error_messages);
this might work strings or numbers, not work objects. thankfully can turn object string using:
json.stringify(error_messages);
which give snapshot of object @ time of execution.
javascript backbone.js
Comments
Post a Comment