【发布时间】:2009-09-24 20:24:27
【问题描述】:
我有一个嵌入在 tabContainer 中的 ContentPane 中的网格。 IE7加载itemfilewritestore的时候会弹出错误。
代码:
var theData = {标识: id , items[]}; var theStore = new dojo.data.ItemFileWriteStore({data: theData});
console.debug(theStore); // 这会引发一些奇怪的错误
错误: {close:function(_81)if(!this.isDirty)........商店中存在未保存的更改请在调用关闭之前保存或还原更改。
此错误仅在 IE7 中显示。 FF没有问题,正确渲染数据。是的,我知道这段代码中没有数据,但在实际代码中,数据是稍后添加的。
【问题讨论】:
-
console.debug 在所有浏览器中并不一致。您确定 console.debug 调用不是导致问题的原因吗?此外,尝试在没有“构建”的情况下从源代码运行 Dojo,以便像 _81 这样的变量名将通过未压缩。在 Firebug 或 Visual Studio 中,您实际上应该能够获取异常的堆栈跟踪,或者放入断点/调试器语句以查看发生了什么。
-
我很确定 debug.console 命令不是问题。错误也很明显,因为网格本身没有显示存储中的数据。我把 console.debug 命令用来跟踪错误。获取源后提供的错误:
-
{close:function(/* object? */ request) { // 摘要: // 重写 ItemFileReadStore 的基本关闭函数以添加检查存储状态。 // 描述: // 覆盖 ItemFileReadStore 的基本关闭函数以添加检查存储状态。 // 如果存储仍然是脏的(未保存的更改),那么将抛出错误而不是 // 清除内部状态以从 url 重新加载。 //如果不脏则清除...否则抛出错误
-
if(this.clearOnClose){ if(!this.isDirty()){ this.inherited(arguments); }else if(this._jsonFileUrl !== ""){ //仅当存储脏并且我们从 url 加载时才抛出错误(在保存状态之前无法从 url 重新加载)。 throw new Error("dojo.data.ItemFileWriteStore: 存储中存在未保存的更改。请在调用关闭之前保存或还原更改。"); } }
-
} onDelete:function( /* item */ deletedItem){ // 摘要:见 dojo.data.api.Notification.onDelete() // 不需要做任何事情。这个方法在这里只是为了让 // 客户端代码可以将观察者连接到它。 } }
标签: internet-explorer-7 dojo grid