我有SPA(热毛巾模板)并使用window.localStore
在浏览器中保存数据。我使用了breeze 1.3.3中的导出/导入,当我在第一次测试时清除浏览器历史记录时,这些工作完美,之后我没有清除浏览器历史记录,并且那些再次正常导出/导入实体到window.localStore
。但是在经过多次测试后,浏览器显示下一个错误:
SCRIPT5022: This key is already attached: Project:#Solution.Project--1
当我关闭浏览器并且第一次测试时我没有清除浏览器历史记录时出现错误。
当我加载SPA时,首先我加载window.localStore
的数据并使用importEntities
微风功能。
SPA已加载manager.getChanges().length
结果为零(0
),这是正确的,稍后我会调用下一个函数setLocalStorageToManager
来加载实际经理中的挂起更改。
function setLocalStorageToManager(manager) {
var name = 'pendingChangesOnLocalStorage';
if (window.localStorage.length > 0) {
var importData = window.localStorage.getItem(name);
if (importData) {
return manager.importEntities(importData,
{ mergeStrategy: breeze.MergeStrategy.PreserveChanges });
} else {
return manager;
}
} else {
return manager;
}
}
错误出现在这里:
manager.importEntities(importData,{ mergeStrategy: breeze.MergeStrategy.PreserveChanges });
例如,在我的测试中,window.localStore
会返回两个包含id:-1
和id:-2
的实体,但在下一个函数的breeze.debug.js
中会读取第一个{{1}的实体},但稍后再次使用id:-1
读取第二个实体,这是错误id:-1
:
This key is already attached
错误出现在第三个测试中(将数据导出到localStorage并导入此数据)而没有删除浏览器历史记录,我在IE10,Google Chrome版本27.0.1453.93 m和Firefox 21.0中进行了测试。
请任何帮助非常感谢