Backbone.js模型缓存
Backbone.js model caching
注意:我是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();
然后我使用这个代码:
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
所以问题是,主干模型是否以某种方式缓存了对象属性?我做错什么了吗?
注意:这是将在WordPress Dashboard中使用的插件的一部分,我不知道WordPress是否已经使用任何插件来缓存模型数据。
Console保存对对象的引用,因此当您在代码执行后检查它们时,对象的状态将是现在的状态,而不是调用时的状态:
console.log(error_messages);
这可能适用于字符串或数字,但不适用于对象。值得庆幸的是,您可以使用将对象转换为字符串
JSON.stringify(error_messages);
它将在执行时为您提供对象的快照。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 如何在从浏览缓存加载页面时执行javascript
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 防止jQuery Mobile中的ajax缓存
- 显示模块模式在Knockout中设置模型的新实例
- 使用导航属性创建Kendo UI网格模型的问题
- Backbone.js模型缓存
- 使用骨干模型缓存图像
- Three.js如何缓存(本地存储)3d模型和纹理