注意:我是一個非常非常開始在骨幹平臺! :)Backbone.js模型緩存
我有這個型號的骨幹:
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();
,然後我用這個代碼:
com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'This is an error');
com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'Another error');
com.wp.srb.errors_model.add_error('#ad', '#image_upload', 'Yet another 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
);
但我得到的結果是這樣兩個動作(com.wp.srb.errors_model.add_error
和com.wp.srb.errors_model.remove_error
) :
Object {#ad: Object}
#ad: Object
#image_upload: Object
13b7afb8b11644e17569bd2efb571b10: "This is an error"
69553926a7783c27f7c18eff55cbd429: "Yet another error"
#image_url: Object
2b4a9847e26368312704b8849de9247a: "URL error"
__proto__: Object
__proto__: Object
__proto__: Object
Object {#ad: Object}
#ad: Object
#image_upload: Object
13b7afb8b11644e17569bd2efb571b10: "This is an error"
69553926a7783c27f7c18eff55cbd429: "Yet another error"
#image_url: Object
2b4a9847e26368312704b8849de9247a: "URL error"
__proto__: Object
__proto__: Object
__proto__: Object
Object {#ad: Object}
#ad: Object
#image_upload: Object
13b7afb8b11644e17569bd2efb571b10: "This is an error"
69553926a7783c27f7c18eff55cbd429: "Yet another error"
#image_url: Object
2b4a9847e26368312704b8849de9247a: "URL error"
__proto__: Object
__proto__: Object
__proto__: Object
Object {#ad: Object}
#ad: Object
#image_upload: Object
13b7afb8b11644e17569bd2efb571b10: "This is an error"
69553926a7783c27f7c18eff55cbd429: "Yet another error"
#image_url: Object
2b4a9847e26368312704b8849de9247a: "URL error"
__proto__: Object
__proto__: Object
__proto__: Object
Object {#ad: Object}
#ad: Object
#image_upload: Object
13b7afb8b11644e17569bd2efb571b10: "This is an error"
69553926a7783c27f7c18eff55cbd429: "Yet another error"
#image_url: Object
2b4a9847e26368312704b8849de9247a: "URL error"
__proto__: Object
__proto__: Object
__proto__: Object
所以問題是,骨幹模型,someho w緩存對象屬性?我做錯了什麼?
注意:這是插件的一部分,將用於WordPress儀表板,我不知道WordPress是否已經使用任何插件來緩存模型數據。
所以問題是,當你添加新的數據到模型,它似乎已經被添加過? – STT 2014-10-08 10:07:46
是的,沒錯。總的來說,我認爲這不應該發生。 – 2014-10-08 10:08:31
當您僅調用單一的add_error調用時,這是否也會發生?這裏還有關於其他錯誤的數據嗎? – STT 2014-10-08 10:10:58